Business Statement¶

This project aims to enhance the current weather detection mechanism by developing an optimal prediction model along with necessary implementation techniques that can complement traditional forecast models. Rapidly changing weather conditions often go unnoticed by traditional forecasting methods, resulting in a lack of instantaneous information about these changes. By incorporating live pictures of weather patterns approaching specific regions, this model can capture and classify the upcoming weather swiftly. Thus, it provides valuable and timely information about the imminent weather changes, serving as a valuable enhancement to the existing weather detection approach.

In [2]:
from google.colab import drive
drive.mount('/content/drive')
%cd drive/My Drive
Mounted at /content/drive
/content/drive/My Drive

Import the packages¶

In [60]:
#Import packages
import tensorflow as tf
from tensorflow import keras
from tensorflow.keras.preprocessing.image import load_img
import matplotlib.pyplot as plt
import re
import os
import pandas as pd
import numpy as np
import seaborn as sns
import random
from PIL import Image
from tqdm import tqdm
import matplotlib.pyplot as plt
import cv2
from skimage.feature import hog, canny
from skimage.filters import sobel
import pandas as pd
import numpy as np
import tensorflow as tf
from tensorflow.keras.preprocessing.image import ImageDataGenerator
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Conv2D, MaxPooling2D, Flatten, Dense
from matplotlib.patches import Patch
import matplotlib.pyplot as plt
from tensorflow.keras.applications import VGG16
from sklearn.preprocessing import LabelEncoder
from numpy import expand_dims
from tensorflow.keras.utils import plot_model
from IPython.display import Image

Import dataset and get ready for modelling¶

In [4]:
path="/content/drive/My Drive/weather"
cloudy=path+'/cloudy'
rain=path+'/rain'
shine=path+'/shine'
sunrise=path+'/sunrise'
In [5]:
df=pd.DataFrame()
In [6]:
df['pictures']=os.listdir(cloudy)+os.listdir(rain)+os.listdir(shine)+os.listdir(sunrise)
In [7]:
stored_label=[]
stored_paths=[]
for picture_name in df['pictures']:
  label=re.match(r'([a-zA-Z]+)', picture_name).group()
  stored_label.append(label)
  stored_paths.append(path+'/'+label+'/'+picture_name)
In [8]:
df['label']=stored_label
df['path']=stored_paths
In [9]:
df.head()
Out[9]:
pictures label path
0 cloudy103.jpg cloudy /content/drive/My Drive/weather/cloudy/cloudy1...
1 cloudy1.jpg cloudy /content/drive/My Drive/weather/cloudy/cloudy1...
2 cloudy101.jpg cloudy /content/drive/My Drive/weather/cloudy/cloudy1...
3 cloudy104.jpg cloudy /content/drive/My Drive/weather/cloudy/cloudy1...
4 cloudy10.jpg cloudy /content/drive/My Drive/weather/cloudy/cloudy1...

Check for missing data¶

In [10]:
df.isna().sum()
Out[10]:
pictures    0
label       0
path        0
dtype: int64

Exploratory Data Analysis¶

Explore the number of images in each category¶

In [11]:
plt.figure(figsize=(5,5))
class_cnt = df.groupby(['label']).size().reset_index(name = 'counts')
colors = sns.color_palette('Paired')[0:9]
plt.pie(class_cnt['counts'], labels=class_cnt['label'], colors=colors, autopct='%1.1f%%')
plt.legend(loc='right')
plt.show()

Visualization¶

plot a representative from each category

In [12]:
plt.figure(figsize = (15,12))
for idx,m in enumerate(df.label.unique()):
    plt.subplot(4,7,idx+1)
    rep_df = df[df['label'] ==m].reset_index(drop = True)
    image_path = rep_df.loc[random.randint(0, len(rep_df))-1,'path']
    img = Image.open(image_path)
    img = img.resize((224,224))
    plt.imshow(img)
    plt.axis('off')
    plt.title(m)
plt.tight_layout()
plt.show()

Explore Image Sizes¶

In [13]:
widths,heights=[],[]
for path in tqdm(df['path']):
  widths.append(Image.open(path).size[0])
  heights.append(Image.open(path).size[1])
100%|██████████| 1125/1125 [07:45<00:00,  2.42it/s]
In [14]:
df['width']=widths
df['height']=heights
In [15]:
df
Out[15]:
pictures label path width height
0 cloudy103.jpg cloudy /content/drive/My Drive/weather/cloudy/cloudy1... 275 183
1 cloudy1.jpg cloudy /content/drive/My Drive/weather/cloudy/cloudy1... 600 400
2 cloudy101.jpg cloudy /content/drive/My Drive/weather/cloudy/cloudy1... 338 149
3 cloudy104.jpg cloudy /content/drive/My Drive/weather/cloudy/cloudy1... 275 183
4 cloudy10.jpg cloudy /content/drive/My Drive/weather/cloudy/cloudy1... 271 186
... ... ... ... ... ...
1120 sunrise86.jpg sunrise /content/drive/My Drive/weather/sunrise/sunris... 276 183
1121 sunrise97.jpg sunrise /content/drive/My Drive/weather/sunrise/sunris... 300 168
1122 sunrise99.jpg sunrise /content/drive/My Drive/weather/sunrise/sunris... 283 178
1123 sunrise96.jpg sunrise /content/drive/My Drive/weather/sunrise/sunris... 3008 2000
1124 sunrise98.jpg sunrise /content/drive/My Drive/weather/sunrise/sunris... 1024 576

1125 rows × 5 columns

In [16]:
df.describe()
Out[16]:
width height
count 1125.000000 1125.000000
mean 506.335111 334.777778
std 539.274611 355.133806
min 158.000000 94.000000
25% 259.000000 168.000000
50% 284.000000 183.000000
75% 600.000000 384.000000
max 4752.000000 3195.000000
In [17]:
plt.figure(figsize=(8, 6))
plt.hist([df['width'],df['height']], bins=10, label=['Width', 'Height'])
plt.xlabel('Values')
plt.ylabel('Frequency')
plt.title('Distribution of Height and Width')
plt.legend()
plt.show()

It appears that the majority of the images have width or height smaller than 1000

In [18]:
# Plotting the grouped histogram
unique_categories = df['label'].unique()
colors = sns.color_palette('husl', n_colors=len(unique_categories))
sns.set_palette(colors)

plt.figure(figsize=(8, 6))
sns.histplot(data=df, x='height', hue='label', multiple='stack')
plt.xlabel('Height')
plt.ylabel('Frequency')
plt.title('Distribution of Height for Different Categories')
plt.legend(title='Category')


# Create custom legend handles
legend_handles = [Patch(facecolor=colors[i], edgecolor='w', label=category) for i, category in enumerate(unique_categories)]

plt.legend(handles=legend_handles, title='Category', loc='upper right')
plt.show()
WARNING:matplotlib.legend:No artists with labels found to put in legend.  Note that artists whose label start with an underscore are ignored when legend() is called with no argument.

It appears that the height is distributed unevenly among different categories

In [19]:
# Plotting the grouped histogram
unique_categories = df['label'].unique()
colors = sns.color_palette('husl', n_colors=len(unique_categories))
sns.set_palette(colors)

plt.figure(figsize=(8, 6))
sns.histplot(data=df, x='width', hue='label', multiple='stack')
plt.xlabel('width')
plt.ylabel('Frequency')
plt.title('Distribution of width for Different Categories')
plt.legend(title='Category')


# Create custom legend handles
legend_handles = [Patch(facecolor=colors[i], edgecolor='w', label=category) for i, category in enumerate(unique_categories)]

plt.legend(handles=legend_handles, title='Category', loc='upper right')
plt.show()
WARNING:matplotlib.legend:No artists with labels found to put in legend.  Note that artists whose label start with an underscore are ignored when legend() is called with no argument.

Similar inference may be drawn for the case of width

Explore images in some edges¶

In [20]:
def edges_images_gray(class_name):
    classes_df = df[df['label'] == class_name].reset_index(drop=True)
    for idx, m in enumerate(np.random.choice(df['path'], 4)):
        print(f"Processing image: {m}")
        image = cv2.imread(m)
        if image is None:
            print(f"Error loading image: {m}")
            continue
        gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
        edges = sobel(image)
        gray_edges = canny(gray)
        dimension = edges.shape
        fig = plt.figure(figsize=(8, 8))
        plt.suptitle(class_name)
        plt.subplot(2, 2, 1)
        plt.imshow(gray_edges)
        plt.subplot(2, 2, 2)
        plt.imshow(edges[:dimension[0], :dimension[1], 0], cmap="gray")
        plt.subplot(2, 2, 3)
        plt.imshow(edges[:dimension[0], :dimension[1], 1], cmap='gray')
        plt.subplot(2, 2, 4)
        plt.imshow(edges[:dimension[0], :dimension[1], 2], cmap='gray')
        plt.show()
for class_name in df['label'].unique():
    edges_images_gray(class_name)
Processing image: /content/drive/My Drive/weather/cloudy/cloudy84.jpg
Processing image: /content/drive/My Drive/weather/shine/shine153.jpg
Processing image: /content/drive/My Drive/weather/rain/rain106.jpg
Processing image: /content/drive/My Drive/weather/sunrise/sunrise62.jpg
Processing image: /content/drive/My Drive/weather/cloudy/cloudy10.jpg
Processing image: /content/drive/My Drive/weather/sunrise/sunrise26.jpg
Processing image: /content/drive/My Drive/weather/cloudy/cloudy37.jpg
Processing image: /content/drive/My Drive/weather/shine/shine153.jpg
Processing image: /content/drive/My Drive/weather/sunrise/sunrise151.jpg
Processing image: /content/drive/My Drive/weather/cloudy/cloudy265.jpg
Processing image: /content/drive/My Drive/weather/shine/shine5.jpg
Processing image: /content/drive/My Drive/weather/sunrise/sunrise141.jpg
Processing image: /content/drive/My Drive/weather/shine/shine198.jpg
Processing image: /content/drive/My Drive/weather/sunrise/sunrise320.jpg
Processing image: /content/drive/My Drive/weather/rain/rain27.jpg
Processing image: /content/drive/My Drive/weather/sunrise/sunrise162.jpg

Color Analysis¶

In [21]:
def check_color_number(Image):
    weight = Image.size[0]
    height =Image.size[1]
    for m in range(weight):
        for n in range(height):
            r,g,b = Image.getpixel((m,n))
            if r != g != b: 
              return False
    return True
In [22]:
sampleFrac = 0.5

checkcolor_lst = []
for imageName in df['path'].sample(frac=sampleFrac):
    val = Image.open(imageName).convert('RGB')
    checkcolor_lst.append(check_color_number(val))
print(np.sum(checkcolor_lst) / len(checkcolor_lst))
del checkcolor_lst
0.030249110320284697

Since the scale value is very small, it suggests that to the range of 0 to 1, the images in the dataset have a limited range of colors. Thus, a choice of red, green and blue seems to be reasonable.

Get the Distribution Plot for each Red, Green, and Blue color in each graph¶

In [23]:
def calculate_rgb_sums(row):
    image = cv2.imread(row['path'])
    image = cv2.cvtColor(image, cv2.COLOR_BGR2RGB)
    red_sum = np.sum(image[:, :, 0])
    green_sum = np.sum(image[:, :, 1])
    blue_sum = np.sum(image[:, :, 2])
    return red_sum, green_sum, blue_sum
In [24]:
tqdm.pandas()
df[['R', 'G', 'B']] = df.progress_apply(lambda row: pd.Series(calculate_rgb_sums(row)), axis=1)
100%|██████████| 1125/1125 [00:18<00:00, 60.29it/s]

Present the color distribution for red, green, and blue images¶

In [25]:
def color_distribution(df, count):
    fig, ax = plt.subplots(count, 2, figsize=(15, 15))
    
    if df.empty:
        print("The selected color has weak image intensity.")
        return
    
    for idx, path in enumerate(np.random.choice(df['path'], count)):
        image = cv2.imread(path)
        image_rgb = cv2.cvtColor(image, cv2.COLOR_BGR2RGB)
        
        ax[idx, 0].imshow(image_rgb)
        ax[idx, 0].axis('off')
        
        color_means = np.mean(image_rgb, axis=(0, 1))
        ax[idx, 1].set_title('R={:.0f}, G={:.0f}, B={:.0f}'.format(color_means[0], color_means[1], color_means[2]))
        
        for channel in range(3):
            histogram, bins = np.histogram(image_rgb[:, :, channel], bins=255)
            ax[idx, 1].bar(bins[:-1], histogram, label=['R', 'G', 'B'][channel], alpha=0.8, color=['red', 'green', 'blue'][channel])
        
        ax[idx, 1].legend()
        ax[idx, 1].axis('off')
In [26]:
conditions = [
    ((df['B']) < df['R']) & ((df['G']) < df['R']),  # Condition for red images
    (df['G'] > df['R']) & (df['G'] > df['B']),     # Condition for green images
    (df['B'] > df['R']) & (df['B'] > df['G'])      # Condition for blue images
]

labels = ['Red', 'Green', 'Blue']

for condition, label in zip(conditions, labels):
    filtered_df = df[condition]
    if not filtered_df.empty:
        color_distribution(filtered_df, 8)
        plt.suptitle(f"{label} Images", fontsize=16)  # Add a title to indicate the condition
        plt.show()
    else:
        print(f"No {label} images found.")

According to the above investigation, it appears that the color distribution of the selected sample images follow the expectation of conventional understanding regarding colors.

In [27]:
from tensorflow.keras.preprocessing.image import load_img
from tensorflow.keras.preprocessing.image import load_img, img_to_array
from tensorflow.keras.applications.vgg16 import preprocess_input
from keras.models import Sequential, Model
from keras.layers import Convolution2D, MaxPooling2D, AveragePooling2D, GlobalAveragePooling2D
from sklearn.model_selection import train_test_split
from tensorflow.keras.regularizers import l2
from tensorflow.keras.layers import Dropout

from tensorflow.keras.preprocessing.image import ImageDataGenerator
from tensorflow.keras.regularizers import l2
from tensorflow.keras.callbacks import EarlyStopping

Starting Modelling¶

Start off with using pre-trained models

In [27]:
combinations=[[5,16],[5,32],[5,64],[5,128], [10,16],[10,32],[10,64],[10,128], [20,16],[20,32],[20,64],[20,128],[50,16],[50,32],[50,64],[50,128]]
In [28]:
dir="/content/drive/My Drive/weather"
In [29]:
labels=os.listdir(dir)
In [30]:
#get image arrays and label arrays
def input_target_split(directory, labels):
    dataset = []
    stored = {}
    count = 0
    print('Labels:', labels)
    
    for label in labels:
        folder = os.path.join(directory, label)
        
        for image in os.listdir(folder):
            try:
                img_path = os.path.join(folder, image)
                img = load_img(img_path, target_size=(150, 150))
                img = img_to_array(img) / 255.0
                dataset.append((img, count))
            except:
                pass
        
        print(f'\rCompleted: {label}', end='')
        stored[label] = count
        count += 1
    
    print('Dataset length:', len(dataset))
    random.shuffle(dataset)
    X, y = zip(*dataset)
    
    

    return np.array(X), np.array(y)
In [31]:
X, y = input_target_split(dir,labels)
Labels: ['cloudy', 'shine', 'rain', 'sunrise']
Completed: sunriseDataset length: 1125

Split the train and test set¶

In [32]:
from sklearn.model_selection import train_test_split

# Split the data into training and test sets
X_train, X_test, Y_train, Y_test = train_test_split(X, y, test_size=0.2, random_state=42)

# Further split the training set into training and validation sets
X_train, X_val, Y_train, Y_val = train_test_split(X_train, Y_train, test_size=0.2, random_state=42)
In [33]:
#prepare the y values using diagnomnal matrixs
#4 for only four categories
num_labels=len(np.unique(df['label']))
y_train=np.eye(num_labels)[Y_train]
y_test=np.eye(num_labels)[Y_test]
y_val=np.eye(num_labels)[Y_val]
In [37]:
base_model=VGG16(weights='imagenet',include_top=False,input_shape=(150, 150, 3))
Downloading data from https://storage.googleapis.com/tensorflow/keras-applications/vgg16/vgg16_weights_tf_dim_ordering_tf_kernels_notop.h5
58889256/58889256 [==============================] - 4s 0us/step
In [38]:
for layer in base_model.layers:
    layer.trainable = False
In [39]:
x = base_model.output
x = GlobalAveragePooling2D()(x)
x = Dense(512, activation='relu')(x)
predictions = Dense(num_labels, activation='softmax')(x)
model = Model(inputs=base_model.input, outputs=predictions)
In [40]:
model.compile(optimizer='adam', loss='categorical_crossentropy', metrics=['accuracy'])
history = model.fit(X_train, y_train, epochs=10, batch_size=32, validation_data=(X_val, y_val))
Epoch 1/10
23/23 [==============================] - 17s 221ms/step - loss: 0.9679 - accuracy: 0.6139 - val_loss: 0.7278 - val_accuracy: 0.7611
Epoch 2/10
23/23 [==============================] - 2s 82ms/step - loss: 0.5589 - accuracy: 0.8125 - val_loss: 0.5739 - val_accuracy: 0.7611
Epoch 3/10
23/23 [==============================] - 2s 82ms/step - loss: 0.4327 - accuracy: 0.8542 - val_loss: 0.4438 - val_accuracy: 0.8222
Epoch 4/10
23/23 [==============================] - 2s 94ms/step - loss: 0.3282 - accuracy: 0.8903 - val_loss: 0.3931 - val_accuracy: 0.8500
Epoch 5/10
23/23 [==============================] - 2s 97ms/step - loss: 0.2784 - accuracy: 0.9139 - val_loss: 0.3503 - val_accuracy: 0.8722
Epoch 6/10
23/23 [==============================] - 2s 97ms/step - loss: 0.2404 - accuracy: 0.9278 - val_loss: 0.3255 - val_accuracy: 0.8944
Epoch 7/10
23/23 [==============================] - 2s 94ms/step - loss: 0.2083 - accuracy: 0.9347 - val_loss: 0.3230 - val_accuracy: 0.8667
Epoch 8/10
23/23 [==============================] - 2s 82ms/step - loss: 0.1773 - accuracy: 0.9514 - val_loss: 0.2903 - val_accuracy: 0.9222
Epoch 9/10
23/23 [==============================] - 2s 82ms/step - loss: 0.1597 - accuracy: 0.9625 - val_loss: 0.2724 - val_accuracy: 0.9278
Epoch 10/10
23/23 [==============================] - 2s 82ms/step - loss: 0.1480 - accuracy: 0.9556 - val_loss: 0.2959 - val_accuracy: 0.8833
In [41]:
import matplotlib.pyplot as plt

# Get the accuracy and loss values from the history object
train_accuracy = history.history['accuracy']
val_accuracy = history.history['val_accuracy']
train_loss = history.history['loss']
val_loss = history.history['val_loss']

# Plot accuracy
plt.figure(figsize=(10, 5))
plt.subplot(1, 2, 1)
epochs = range(1, len(train_accuracy) + 1)
plt.plot(epochs, train_accuracy, 'b-', label='Training Accuracy')
plt.plot(epochs, val_accuracy, 'r-', label='Validation Accuracy')
plt.xlabel('Epochs')
plt.ylabel('Accuracy')
plt.title('Training and Validation Accuracy')
plt.legend()

# Plot loss
plt.subplot(1, 2, 2)
plt.plot(epochs, train_loss, 'b-', label='Training Loss')
plt.plot(epochs, val_loss, 'r-', label='Validation Loss')
plt.xlabel('Epochs')
plt.ylabel('Loss')
plt.title('Training and Validation Loss')
plt.legend()

plt.tight_layout()
plt.show()

Apply this particular model on the test set¶

In [42]:
# Make predictions on the test set
predictions = model.predict(X_test)

# Convert predictions to class labels
predicted_labels = np.argmax(predictions, axis=1)

# Compare predicted labels with true labels
accuracy = np.mean(predicted_labels == Y_test)
print("Test set accuracy:", accuracy)
8/8 [==============================] - 1s 132ms/step
Test set accuracy: 0.8977777777777778

Though the accuracy and loss in both training and validation deviate from each other, in general, they both exhibit similar tendency as epochs rises, i.e. Accuracy improves and loss decreases when epochs increases. However, it can be only the special case for this particular model with this particular combinations. And it also appears that the test set has relatively great accuracy. Therefore it is worth to try out different combinations of epoch and batch sizes to fully determine if this model architecture would yield overfitting/underfitting problems and to see if a regularization technique would be needed.

Try more combinations of Epochs and Batch Sizes into the same model architecture¶

In [43]:
#write a function for modelling
def base_vgg_16_modelling(X,y,df,epochs,batch_size):
  X_train, X_test, Y_train, Y_test = train_test_split(X, y, test_size=0.2, random_state=42)
  X_train, X_val, Y_train, Y_val = train_test_split(X_train, Y_train, test_size=0.2, random_state=42)

  num_labels=len(np.unique(df['label']))
  y_train=np.eye(num_labels)[Y_train]
  y_test=np.eye(num_labels)[Y_test]
  y_val=np.eye(num_labels)[Y_val]

  #initialize the base model
# Build the model architecture
  base_model=VGG16(weights='imagenet',include_top=False,input_shape=(150, 150, 3))
  for layer in base_model.layers:
    layer.trainable = False
  
  x = base_model.output
  x = GlobalAveragePooling2D()(x)
  x = Dense(512, activation='relu')(x)
  predictions = Dense(num_labels, activation='softmax')(x)
  model = Model(inputs=base_model.input, outputs=predictions) 
# Compile the model
  model.compile(optimizer='adam', loss='categorical_crossentropy', metrics=['accuracy'])
  history = model.fit(X_train, y_train, epochs=epochs, batch_size=batch_size, validation_data=(X_val, y_val))

  training_accuracy = history.history['accuracy']
  training_loss = history.history['loss']
  validation_accuracy = history.history['val_accuracy']
  validation_loss = history.history['val_loss']

  test_predictions = model.predict(X_test)
  predicted_labels = np.argmax(test_predictions, axis=1)

# Compare predicted labels with true labels
  accuracy = np.mean(predicted_labels == Y_test)
  #test_loss, test_accuracy=model.evaluate(X_test,Y_test, batch_size=batch_size)
  return training_accuracy, training_loss, validation_accuracy, validation_loss, accuracy
In [40]:
combinations=[[5,16],[5,32],[5,64],[5,128], [10,16],[10,32],[10,64],[10,128], [20,16],[20,32],[20,64],[20,128],[50,16],[50,32],[50,64],[50,128]]
In [45]:
arry=np.zeros((16,7))
In [46]:
for m in range(len(combinations)):
  arry[m][0]=combinations[m][0]
  arry[m][1]=combinations[m][1]
  preliminary_model_output=list(base_vgg_16_modelling(X,y,df,combinations[m][0],combinations[m][1]))
  arry[m][2]=np.mean(preliminary_model_output[0])
  arry[m][3]=np.mean(preliminary_model_output[1])
  arry[m][4]=np.mean(preliminary_model_output[2])
  arry[m][5]=np.mean(preliminary_model_output[3])
  arry[m][6]=preliminary_model_output[4]
  #arry[m][7]=preliminary_model_output[5]
Epoch 1/5
45/45 [==============================] - 4s 72ms/step - loss: 0.8741 - accuracy: 0.6694 - val_loss: 0.5839 - val_accuracy: 0.7944
Epoch 2/5
45/45 [==============================] - 2s 52ms/step - loss: 0.4472 - accuracy: 0.8514 - val_loss: 0.4773 - val_accuracy: 0.8278
Epoch 3/5
45/45 [==============================] - 2s 51ms/step - loss: 0.3474 - accuracy: 0.8819 - val_loss: 0.4393 - val_accuracy: 0.8667
Epoch 4/5
45/45 [==============================] - 2s 51ms/step - loss: 0.2766 - accuracy: 0.9097 - val_loss: 0.3606 - val_accuracy: 0.8500
Epoch 5/5
45/45 [==============================] - 2s 45ms/step - loss: 0.2107 - accuracy: 0.9403 - val_loss: 0.3193 - val_accuracy: 0.9278
8/8 [==============================] - 1s 68ms/step
Epoch 1/5
23/23 [==============================] - 3s 100ms/step - loss: 0.9867 - accuracy: 0.6083 - val_loss: 0.6759 - val_accuracy: 0.7556
Epoch 2/5
23/23 [==============================] - 2s 94ms/step - loss: 0.5464 - accuracy: 0.8278 - val_loss: 0.5090 - val_accuracy: 0.8000
Epoch 3/5
23/23 [==============================] - 2s 94ms/step - loss: 0.4101 - accuracy: 0.8639 - val_loss: 0.4395 - val_accuracy: 0.8333
Epoch 4/5
23/23 [==============================] - 2s 97ms/step - loss: 0.3278 - accuracy: 0.9000 - val_loss: 0.4313 - val_accuracy: 0.8222
Epoch 5/5
23/23 [==============================] - 2s 95ms/step - loss: 0.2773 - accuracy: 0.9111 - val_loss: 0.3497 - val_accuracy: 0.8778
8/8 [==============================] - 1s 67ms/step
Epoch 1/5
12/12 [==============================] - 10s 473ms/step - loss: 1.1149 - accuracy: 0.5611 - val_loss: 0.8789 - val_accuracy: 0.7056
Epoch 2/5
12/12 [==============================] - 2s 183ms/step - loss: 0.7065 - accuracy: 0.7833 - val_loss: 0.6298 - val_accuracy: 0.7667
Epoch 3/5
12/12 [==============================] - 2s 153ms/step - loss: 0.5305 - accuracy: 0.8181 - val_loss: 0.5406 - val_accuracy: 0.7889
Epoch 4/5
12/12 [==============================] - 2s 151ms/step - loss: 0.4358 - accuracy: 0.8625 - val_loss: 0.4808 - val_accuracy: 0.8167
Epoch 5/5
12/12 [==============================] - 2s 174ms/step - loss: 0.3678 - accuracy: 0.8819 - val_loss: 0.4620 - val_accuracy: 0.8611
8/8 [==============================] - 1s 71ms/step
Epoch 1/5
6/6 [==============================] - 16s 1s/step - loss: 1.2269 - accuracy: 0.4653 - val_loss: 1.0188 - val_accuracy: 0.6833
Epoch 2/5
6/6 [==============================] - 2s 365ms/step - loss: 0.8735 - accuracy: 0.7597 - val_loss: 0.7428 - val_accuracy: 0.7389
Epoch 3/5
6/6 [==============================] - 2s 360ms/step - loss: 0.6779 - accuracy: 0.7958 - val_loss: 0.6418 - val_accuracy: 0.7722
Epoch 4/5
6/6 [==============================] - 2s 369ms/step - loss: 0.5648 - accuracy: 0.8056 - val_loss: 0.5609 - val_accuracy: 0.7833
Epoch 5/5
6/6 [==============================] - 2s 314ms/step - loss: 0.4894 - accuracy: 0.8333 - val_loss: 0.5073 - val_accuracy: 0.8056
8/8 [==============================] - 1s 61ms/step
Epoch 1/10
45/45 [==============================] - 4s 64ms/step - loss: 0.9051 - accuracy: 0.6694 - val_loss: 0.5859 - val_accuracy: 0.7722
Epoch 2/10
45/45 [==============================] - 2s 49ms/step - loss: 0.4552 - accuracy: 0.8514 - val_loss: 0.4655 - val_accuracy: 0.8111
Epoch 3/10
45/45 [==============================] - 2s 47ms/step - loss: 0.3536 - accuracy: 0.8750 - val_loss: 0.4473 - val_accuracy: 0.8000
Epoch 4/10
45/45 [==============================] - 2s 52ms/step - loss: 0.2816 - accuracy: 0.8972 - val_loss: 0.3522 - val_accuracy: 0.8556
Epoch 5/10
45/45 [==============================] - 2s 47ms/step - loss: 0.2173 - accuracy: 0.9389 - val_loss: 0.3048 - val_accuracy: 0.8944
Epoch 6/10
45/45 [==============================] - 2s 47ms/step - loss: 0.1972 - accuracy: 0.9319 - val_loss: 0.2950 - val_accuracy: 0.8778
Epoch 7/10
45/45 [==============================] - 2s 49ms/step - loss: 0.1641 - accuracy: 0.9514 - val_loss: 0.2870 - val_accuracy: 0.9111
Epoch 8/10
45/45 [==============================] - 2s 54ms/step - loss: 0.1387 - accuracy: 0.9611 - val_loss: 0.2631 - val_accuracy: 0.9167
Epoch 9/10
45/45 [==============================] - 2s 53ms/step - loss: 0.1240 - accuracy: 0.9722 - val_loss: 0.2574 - val_accuracy: 0.9056
Epoch 10/10
45/45 [==============================] - 2s 52ms/step - loss: 0.1038 - accuracy: 0.9736 - val_loss: 0.2374 - val_accuracy: 0.9222
8/8 [==============================] - 1s 71ms/step
Epoch 1/10
23/23 [==============================] - 4s 100ms/step - loss: 1.0262 - accuracy: 0.5917 - val_loss: 0.7129 - val_accuracy: 0.7556
Epoch 2/10
23/23 [==============================] - 2s 84ms/step - loss: 0.5537 - accuracy: 0.8111 - val_loss: 0.5513 - val_accuracy: 0.7667
Epoch 3/10
23/23 [==============================] - 2s 95ms/step - loss: 0.4095 - accuracy: 0.8611 - val_loss: 0.4305 - val_accuracy: 0.8389
Epoch 4/10
23/23 [==============================] - 2s 83ms/step - loss: 0.3320 - accuracy: 0.8958 - val_loss: 0.3926 - val_accuracy: 0.8333
Epoch 5/10
23/23 [==============================] - 2s 96ms/step - loss: 0.2793 - accuracy: 0.9139 - val_loss: 0.3651 - val_accuracy: 0.8889
Epoch 6/10
23/23 [==============================] - 2s 98ms/step - loss: 0.2409 - accuracy: 0.9208 - val_loss: 0.3218 - val_accuracy: 0.8667
Epoch 7/10
23/23 [==============================] - 2s 86ms/step - loss: 0.2099 - accuracy: 0.9278 - val_loss: 0.3054 - val_accuracy: 0.9056
Epoch 8/10
23/23 [==============================] - 2s 84ms/step - loss: 0.1912 - accuracy: 0.9486 - val_loss: 0.2900 - val_accuracy: 0.9167
Epoch 9/10
23/23 [==============================] - 2s 84ms/step - loss: 0.1785 - accuracy: 0.9500 - val_loss: 0.2991 - val_accuracy: 0.9278
Epoch 10/10
23/23 [==============================] - 2s 84ms/step - loss: 0.1589 - accuracy: 0.9569 - val_loss: 0.2806 - val_accuracy: 0.9000
8/8 [==============================] - 1s 61ms/step
Epoch 1/10
12/12 [==============================] - 4s 219ms/step - loss: 1.1922 - accuracy: 0.4722 - val_loss: 0.8651 - val_accuracy: 0.7222
Epoch 2/10
12/12 [==============================] - 2s 159ms/step - loss: 0.7383 - accuracy: 0.7417 - val_loss: 0.6436 - val_accuracy: 0.7833
Epoch 3/10
12/12 [==============================] - 2s 179ms/step - loss: 0.5366 - accuracy: 0.8264 - val_loss: 0.5451 - val_accuracy: 0.7889
Epoch 4/10
12/12 [==============================] - 2s 177ms/step - loss: 0.4369 - accuracy: 0.8528 - val_loss: 0.4752 - val_accuracy: 0.8111
Epoch 5/10
12/12 [==============================] - 2s 154ms/step - loss: 0.3733 - accuracy: 0.8722 - val_loss: 0.4227 - val_accuracy: 0.8333
Epoch 6/10
12/12 [==============================] - 2s 154ms/step - loss: 0.3230 - accuracy: 0.8861 - val_loss: 0.3922 - val_accuracy: 0.8611
Epoch 7/10
12/12 [==============================] - 2s 155ms/step - loss: 0.2815 - accuracy: 0.9111 - val_loss: 0.3633 - val_accuracy: 0.8667
Epoch 8/10
12/12 [==============================] - 2s 182ms/step - loss: 0.2675 - accuracy: 0.9111 - val_loss: 0.3654 - val_accuracy: 0.8667
Epoch 9/10
12/12 [==============================] - 2s 184ms/step - loss: 0.2401 - accuracy: 0.9250 - val_loss: 0.3493 - val_accuracy: 0.8611
Epoch 10/10
12/12 [==============================] - 2s 155ms/step - loss: 0.2109 - accuracy: 0.9347 - val_loss: 0.3085 - val_accuracy: 0.8889
8/8 [==============================] - 1s 74ms/step
Epoch 1/10
6/6 [==============================] - 3s 365ms/step - loss: 1.2204 - accuracy: 0.4903 - val_loss: 0.9511 - val_accuracy: 0.6500
Epoch 2/10
6/6 [==============================] - 2s 358ms/step - loss: 0.8702 - accuracy: 0.7153 - val_loss: 0.8118 - val_accuracy: 0.7444
Epoch 3/10
6/6 [==============================] - 2s 306ms/step - loss: 0.6821 - accuracy: 0.7986 - val_loss: 0.6444 - val_accuracy: 0.7333
Epoch 4/10
6/6 [==============================] - 2s 307ms/step - loss: 0.5637 - accuracy: 0.8167 - val_loss: 0.5899 - val_accuracy: 0.7778
Epoch 5/10
6/6 [==============================] - 2s 312ms/step - loss: 0.4855 - accuracy: 0.8375 - val_loss: 0.5222 - val_accuracy: 0.7889
Epoch 6/10
6/6 [==============================] - 2s 367ms/step - loss: 0.4271 - accuracy: 0.8611 - val_loss: 0.4887 - val_accuracy: 0.8056
Epoch 7/10
6/6 [==============================] - 2s 318ms/step - loss: 0.3821 - accuracy: 0.8681 - val_loss: 0.4508 - val_accuracy: 0.8222
Epoch 8/10
6/6 [==============================] - 2s 362ms/step - loss: 0.3449 - accuracy: 0.8944 - val_loss: 0.4285 - val_accuracy: 0.8111
Epoch 9/10
6/6 [==============================] - 2s 313ms/step - loss: 0.3141 - accuracy: 0.9028 - val_loss: 0.4037 - val_accuracy: 0.8444
Epoch 10/10
6/6 [==============================] - 2s 311ms/step - loss: 0.2877 - accuracy: 0.9111 - val_loss: 0.3799 - val_accuracy: 0.8444
8/8 [==============================] - 1s 62ms/step
Epoch 1/20
45/45 [==============================] - 4s 60ms/step - loss: 0.8093 - accuracy: 0.7167 - val_loss: 0.5484 - val_accuracy: 0.7889
Epoch 2/20
45/45 [==============================] - 2s 54ms/step - loss: 0.4232 - accuracy: 0.8597 - val_loss: 0.4314 - val_accuracy: 0.8222
Epoch 3/20
45/45 [==============================] - 2s 53ms/step - loss: 0.3150 - accuracy: 0.8958 - val_loss: 0.3719 - val_accuracy: 0.8667
Epoch 4/20
45/45 [==============================] - 2s 53ms/step - loss: 0.2456 - accuracy: 0.9181 - val_loss: 0.3265 - val_accuracy: 0.8722
Epoch 5/20
45/45 [==============================] - 2s 53ms/step - loss: 0.2079 - accuracy: 0.9417 - val_loss: 0.3012 - val_accuracy: 0.9111
Epoch 6/20
45/45 [==============================] - 2s 48ms/step - loss: 0.1709 - accuracy: 0.9417 - val_loss: 0.2664 - val_accuracy: 0.9056
Epoch 7/20
45/45 [==============================] - 2s 55ms/step - loss: 0.1490 - accuracy: 0.9556 - val_loss: 0.2647 - val_accuracy: 0.9056
Epoch 8/20
45/45 [==============================] - 2s 54ms/step - loss: 0.1339 - accuracy: 0.9694 - val_loss: 0.2510 - val_accuracy: 0.9111
Epoch 9/20
45/45 [==============================] - 2s 53ms/step - loss: 0.1107 - accuracy: 0.9750 - val_loss: 0.2423 - val_accuracy: 0.9222
Epoch 10/20
45/45 [==============================] - 2s 49ms/step - loss: 0.1092 - accuracy: 0.9722 - val_loss: 0.2350 - val_accuracy: 0.9278
Epoch 11/20
45/45 [==============================] - 2s 48ms/step - loss: 0.0968 - accuracy: 0.9764 - val_loss: 0.2596 - val_accuracy: 0.9278
Epoch 12/20
45/45 [==============================] - 2s 49ms/step - loss: 0.0695 - accuracy: 0.9875 - val_loss: 0.2212 - val_accuracy: 0.9278
Epoch 13/20
45/45 [==============================] - 2s 54ms/step - loss: 0.0635 - accuracy: 0.9875 - val_loss: 0.2311 - val_accuracy: 0.9167
Epoch 14/20
45/45 [==============================] - 2s 53ms/step - loss: 0.0564 - accuracy: 0.9889 - val_loss: 0.2344 - val_accuracy: 0.9333
Epoch 15/20
45/45 [==============================] - 2s 48ms/step - loss: 0.0560 - accuracy: 0.9833 - val_loss: 0.2357 - val_accuracy: 0.9278
Epoch 16/20
45/45 [==============================] - 2s 53ms/step - loss: 0.0648 - accuracy: 0.9833 - val_loss: 0.2126 - val_accuracy: 0.9333
Epoch 17/20
45/45 [==============================] - 2s 48ms/step - loss: 0.0392 - accuracy: 0.9944 - val_loss: 0.2444 - val_accuracy: 0.9222
Epoch 18/20
45/45 [==============================] - 2s 53ms/step - loss: 0.0447 - accuracy: 0.9917 - val_loss: 0.2460 - val_accuracy: 0.8889
Epoch 19/20
45/45 [==============================] - 2s 53ms/step - loss: 0.0347 - accuracy: 0.9917 - val_loss: 0.2097 - val_accuracy: 0.9222
Epoch 20/20
45/45 [==============================] - 2s 48ms/step - loss: 0.0284 - accuracy: 0.9972 - val_loss: 0.2183 - val_accuracy: 0.9389
8/8 [==============================] - 1s 70ms/step
Epoch 1/20
23/23 [==============================] - 3s 100ms/step - loss: 0.9949 - accuracy: 0.6069 - val_loss: 0.7061 - val_accuracy: 0.7278
Epoch 2/20
23/23 [==============================] - 2s 96ms/step - loss: 0.5805 - accuracy: 0.7931 - val_loss: 0.5459 - val_accuracy: 0.8056
Epoch 3/20
23/23 [==============================] - 2s 97ms/step - loss: 0.4356 - accuracy: 0.8667 - val_loss: 0.4587 - val_accuracy: 0.8056
Epoch 4/20
23/23 [==============================] - 2s 100ms/step - loss: 0.3491 - accuracy: 0.8875 - val_loss: 0.4006 - val_accuracy: 0.8444
Epoch 5/20
23/23 [==============================] - 2s 99ms/step - loss: 0.2942 - accuracy: 0.9014 - val_loss: 0.3686 - val_accuracy: 0.8778
Epoch 6/20
23/23 [==============================] - 2s 97ms/step - loss: 0.2533 - accuracy: 0.9194 - val_loss: 0.3509 - val_accuracy: 0.9000
Epoch 7/20
23/23 [==============================] - 2s 86ms/step - loss: 0.2302 - accuracy: 0.9278 - val_loss: 0.3550 - val_accuracy: 0.8444
Epoch 8/20
23/23 [==============================] - 2s 97ms/step - loss: 0.1978 - accuracy: 0.9444 - val_loss: 0.3428 - val_accuracy: 0.8556
Epoch 9/20
23/23 [==============================] - 2s 97ms/step - loss: 0.1865 - accuracy: 0.9361 - val_loss: 0.3425 - val_accuracy: 0.9000
Epoch 10/20
23/23 [==============================] - 2s 99ms/step - loss: 0.1554 - accuracy: 0.9514 - val_loss: 0.2796 - val_accuracy: 0.9000
Epoch 11/20
23/23 [==============================] - 2s 101ms/step - loss: 0.1387 - accuracy: 0.9625 - val_loss: 0.2718 - val_accuracy: 0.9222
Epoch 12/20
23/23 [==============================] - 2s 97ms/step - loss: 0.1238 - accuracy: 0.9736 - val_loss: 0.2585 - val_accuracy: 0.9000
Epoch 13/20
23/23 [==============================] - 2s 85ms/step - loss: 0.1119 - accuracy: 0.9681 - val_loss: 0.2519 - val_accuracy: 0.9222
Epoch 14/20
23/23 [==============================] - 2s 96ms/step - loss: 0.0996 - accuracy: 0.9806 - val_loss: 0.2606 - val_accuracy: 0.8833
Epoch 15/20
23/23 [==============================] - 2s 97ms/step - loss: 0.0888 - accuracy: 0.9792 - val_loss: 0.2496 - val_accuracy: 0.9222
Epoch 16/20
23/23 [==============================] - 2s 97ms/step - loss: 0.0851 - accuracy: 0.9833 - val_loss: 0.2445 - val_accuracy: 0.9167
Epoch 17/20
23/23 [==============================] - 2s 100ms/step - loss: 0.0828 - accuracy: 0.9819 - val_loss: 0.2414 - val_accuracy: 0.9111
Epoch 18/20
23/23 [==============================] - 2s 86ms/step - loss: 0.0741 - accuracy: 0.9806 - val_loss: 0.2667 - val_accuracy: 0.8833
Epoch 19/20
23/23 [==============================] - 2s 96ms/step - loss: 0.0704 - accuracy: 0.9861 - val_loss: 0.2268 - val_accuracy: 0.9278
Epoch 20/20
23/23 [==============================] - 2s 85ms/step - loss: 0.0722 - accuracy: 0.9847 - val_loss: 0.2857 - val_accuracy: 0.9056
8/8 [==============================] - 1s 61ms/step
Epoch 1/20
12/12 [==============================] - 4s 221ms/step - loss: 1.1239 - accuracy: 0.5556 - val_loss: 0.8055 - val_accuracy: 0.7000
Epoch 2/20
12/12 [==============================] - 2s 182ms/step - loss: 0.6786 - accuracy: 0.7972 - val_loss: 0.6341 - val_accuracy: 0.7556
Epoch 3/20
12/12 [==============================] - 2s 179ms/step - loss: 0.5148 - accuracy: 0.8333 - val_loss: 0.5539 - val_accuracy: 0.7944
Epoch 4/20
12/12 [==============================] - 2s 179ms/step - loss: 0.4298 - accuracy: 0.8528 - val_loss: 0.5111 - val_accuracy: 0.7778
Epoch 5/20
12/12 [==============================] - 2s 156ms/step - loss: 0.3902 - accuracy: 0.8667 - val_loss: 0.4676 - val_accuracy: 0.8000
Epoch 6/20
12/12 [==============================] - 2s 179ms/step - loss: 0.3292 - accuracy: 0.8903 - val_loss: 0.4071 - val_accuracy: 0.8611
Epoch 7/20
12/12 [==============================] - 2s 180ms/step - loss: 0.2826 - accuracy: 0.9083 - val_loss: 0.3784 - val_accuracy: 0.8500
Epoch 8/20
12/12 [==============================] - 2s 185ms/step - loss: 0.2813 - accuracy: 0.9153 - val_loss: 0.3827 - val_accuracy: 0.8722
Epoch 9/20
12/12 [==============================] - 2s 181ms/step - loss: 0.2411 - accuracy: 0.9264 - val_loss: 0.3453 - val_accuracy: 0.8556
Epoch 10/20
12/12 [==============================] - 2s 181ms/step - loss: 0.2252 - accuracy: 0.9319 - val_loss: 0.3355 - val_accuracy: 0.8667
Epoch 11/20
12/12 [==============================] - 2s 159ms/step - loss: 0.1972 - accuracy: 0.9458 - val_loss: 0.3084 - val_accuracy: 0.8833
Epoch 12/20
12/12 [==============================] - 2s 181ms/step - loss: 0.1802 - accuracy: 0.9472 - val_loss: 0.2992 - val_accuracy: 0.8944
Epoch 13/20
12/12 [==============================] - 2s 181ms/step - loss: 0.1675 - accuracy: 0.9556 - val_loss: 0.3074 - val_accuracy: 0.8944
Epoch 14/20
12/12 [==============================] - 2s 163ms/step - loss: 0.1596 - accuracy: 0.9556 - val_loss: 0.2877 - val_accuracy: 0.8889
Epoch 15/20
12/12 [==============================] - 2s 186ms/step - loss: 0.1432 - accuracy: 0.9736 - val_loss: 0.2720 - val_accuracy: 0.8944
Epoch 16/20
12/12 [==============================] - 2s 180ms/step - loss: 0.1342 - accuracy: 0.9708 - val_loss: 0.2609 - val_accuracy: 0.9167
Epoch 17/20
12/12 [==============================] - 2s 182ms/step - loss: 0.1399 - accuracy: 0.9528 - val_loss: 0.2719 - val_accuracy: 0.9167
Epoch 18/20
12/12 [==============================] - 2s 182ms/step - loss: 0.1208 - accuracy: 0.9778 - val_loss: 0.2789 - val_accuracy: 0.8889
Epoch 19/20
12/12 [==============================] - 2s 157ms/step - loss: 0.1150 - accuracy: 0.9764 - val_loss: 0.2471 - val_accuracy: 0.9111
Epoch 20/20
12/12 [==============================] - 2s 159ms/step - loss: 0.1010 - accuracy: 0.9806 - val_loss: 0.2445 - val_accuracy: 0.9111
8/8 [==============================] - 1s 68ms/step
Epoch 1/20
6/6 [==============================] - 4s 379ms/step - loss: 1.2474 - accuracy: 0.4583 - val_loss: 1.0240 - val_accuracy: 0.6722
Epoch 2/20
6/6 [==============================] - 2s 314ms/step - loss: 0.9162 - accuracy: 0.7028 - val_loss: 0.8063 - val_accuracy: 0.7500
Epoch 3/20
6/6 [==============================] - 2s 324ms/step - loss: 0.7178 - accuracy: 0.8069 - val_loss: 0.6838 - val_accuracy: 0.7556
Epoch 4/20
6/6 [==============================] - 2s 329ms/step - loss: 0.5905 - accuracy: 0.8153 - val_loss: 0.5905 - val_accuracy: 0.7556
Epoch 5/20
6/6 [==============================] - 2s 321ms/step - loss: 0.5069 - accuracy: 0.8319 - val_loss: 0.5359 - val_accuracy: 0.7889
Epoch 6/20
6/6 [==============================] - 2s 365ms/step - loss: 0.4424 - accuracy: 0.8542 - val_loss: 0.4900 - val_accuracy: 0.8111
Epoch 7/20
6/6 [==============================] - 2s 371ms/step - loss: 0.3964 - accuracy: 0.8667 - val_loss: 0.4595 - val_accuracy: 0.8167
Epoch 8/20
6/6 [==============================] - 2s 324ms/step - loss: 0.3574 - accuracy: 0.8778 - val_loss: 0.4244 - val_accuracy: 0.8389
Epoch 9/20
6/6 [==============================] - 2s 324ms/step - loss: 0.3281 - accuracy: 0.9042 - val_loss: 0.4114 - val_accuracy: 0.8333
Epoch 10/20
6/6 [==============================] - 2s 330ms/step - loss: 0.3012 - accuracy: 0.9000 - val_loss: 0.3817 - val_accuracy: 0.8556
Epoch 11/20
6/6 [==============================] - 2s 337ms/step - loss: 0.2747 - accuracy: 0.9167 - val_loss: 0.3677 - val_accuracy: 0.8444
Epoch 12/20
6/6 [==============================] - 2s 378ms/step - loss: 0.2553 - accuracy: 0.9194 - val_loss: 0.3497 - val_accuracy: 0.8667
Epoch 13/20
6/6 [==============================] - 2s 330ms/step - loss: 0.2380 - accuracy: 0.9236 - val_loss: 0.3349 - val_accuracy: 0.8722
Epoch 14/20
6/6 [==============================] - 2s 374ms/step - loss: 0.2235 - accuracy: 0.9292 - val_loss: 0.3294 - val_accuracy: 0.8667
Epoch 15/20
6/6 [==============================] - 2s 373ms/step - loss: 0.2050 - accuracy: 0.9375 - val_loss: 0.3113 - val_accuracy: 0.8833
Epoch 16/20
6/6 [==============================] - 2s 325ms/step - loss: 0.1928 - accuracy: 0.9417 - val_loss: 0.3055 - val_accuracy: 0.8778
Epoch 17/20
6/6 [==============================] - 2s 374ms/step - loss: 0.1825 - accuracy: 0.9472 - val_loss: 0.2943 - val_accuracy: 0.8833
Epoch 18/20
6/6 [==============================] - 2s 378ms/step - loss: 0.1694 - accuracy: 0.9514 - val_loss: 0.2844 - val_accuracy: 0.8889
Epoch 19/20
6/6 [==============================] - 2s 320ms/step - loss: 0.1602 - accuracy: 0.9639 - val_loss: 0.2791 - val_accuracy: 0.9000
Epoch 20/20
6/6 [==============================] - 2s 365ms/step - loss: 0.1509 - accuracy: 0.9653 - val_loss: 0.2731 - val_accuracy: 0.8944
8/8 [==============================] - 1s 62ms/step
Epoch 1/50
45/45 [==============================] - 4s 61ms/step - loss: 0.8658 - accuracy: 0.6819 - val_loss: 0.6120 - val_accuracy: 0.7722
Epoch 2/50
45/45 [==============================] - 2s 54ms/step - loss: 0.4757 - accuracy: 0.8431 - val_loss: 0.4614 - val_accuracy: 0.8278
Epoch 3/50
45/45 [==============================] - 2s 49ms/step - loss: 0.3439 - accuracy: 0.8792 - val_loss: 0.4452 - val_accuracy: 0.8056
Epoch 4/50
45/45 [==============================] - 2s 47ms/step - loss: 0.2728 - accuracy: 0.9042 - val_loss: 0.3616 - val_accuracy: 0.8444
Epoch 5/50
45/45 [==============================] - 2s 48ms/step - loss: 0.2467 - accuracy: 0.9181 - val_loss: 0.3506 - val_accuracy: 0.8389
Epoch 6/50
45/45 [==============================] - 2s 47ms/step - loss: 0.1913 - accuracy: 0.9417 - val_loss: 0.3627 - val_accuracy: 0.8444
Epoch 7/50
45/45 [==============================] - 2s 52ms/step - loss: 0.1715 - accuracy: 0.9486 - val_loss: 0.2668 - val_accuracy: 0.9111
Epoch 8/50
45/45 [==============================] - 2s 53ms/step - loss: 0.1558 - accuracy: 0.9583 - val_loss: 0.3118 - val_accuracy: 0.8944
Epoch 9/50
45/45 [==============================] - 2s 55ms/step - loss: 0.1444 - accuracy: 0.9569 - val_loss: 0.2630 - val_accuracy: 0.9278
Epoch 10/50
45/45 [==============================] - 2s 48ms/step - loss: 0.1130 - accuracy: 0.9750 - val_loss: 0.2365 - val_accuracy: 0.9222
Epoch 11/50
45/45 [==============================] - 2s 53ms/step - loss: 0.0921 - accuracy: 0.9806 - val_loss: 0.2414 - val_accuracy: 0.9167
Epoch 12/50
45/45 [==============================] - 2s 49ms/step - loss: 0.0884 - accuracy: 0.9792 - val_loss: 0.2403 - val_accuracy: 0.9000
Epoch 13/50
45/45 [==============================] - 2s 48ms/step - loss: 0.0734 - accuracy: 0.9861 - val_loss: 0.2220 - val_accuracy: 0.9278
Epoch 14/50
45/45 [==============================] - 2s 53ms/step - loss: 0.0736 - accuracy: 0.9819 - val_loss: 0.2321 - val_accuracy: 0.9278
Epoch 15/50
45/45 [==============================] - 2s 54ms/step - loss: 0.0701 - accuracy: 0.9861 - val_loss: 0.2400 - val_accuracy: 0.9389
Epoch 16/50
45/45 [==============================] - 2s 48ms/step - loss: 0.0752 - accuracy: 0.9792 - val_loss: 0.2228 - val_accuracy: 0.9167
Epoch 17/50
45/45 [==============================] - 2s 53ms/step - loss: 0.0498 - accuracy: 0.9917 - val_loss: 0.2490 - val_accuracy: 0.8889
Epoch 18/50
45/45 [==============================] - 2s 53ms/step - loss: 0.0455 - accuracy: 0.9931 - val_loss: 0.2454 - val_accuracy: 0.9000
Epoch 19/50
45/45 [==============================] - 2s 48ms/step - loss: 0.0405 - accuracy: 0.9917 - val_loss: 0.2340 - val_accuracy: 0.9278
Epoch 20/50
45/45 [==============================] - 2s 53ms/step - loss: 0.0369 - accuracy: 0.9972 - val_loss: 0.2663 - val_accuracy: 0.9222
Epoch 21/50
45/45 [==============================] - 2s 50ms/step - loss: 0.0342 - accuracy: 0.9958 - val_loss: 0.2193 - val_accuracy: 0.9278
Epoch 22/50
45/45 [==============================] - 2s 48ms/step - loss: 0.0266 - accuracy: 0.9972 - val_loss: 0.2688 - val_accuracy: 0.9000
Epoch 23/50
45/45 [==============================] - 2s 53ms/step - loss: 0.0260 - accuracy: 0.9986 - val_loss: 0.2247 - val_accuracy: 0.9222
Epoch 24/50
45/45 [==============================] - 2s 53ms/step - loss: 0.0237 - accuracy: 1.0000 - val_loss: 0.2309 - val_accuracy: 0.9222
Epoch 25/50
45/45 [==============================] - 2s 48ms/step - loss: 0.0207 - accuracy: 0.9986 - val_loss: 0.2309 - val_accuracy: 0.9222
Epoch 26/50
45/45 [==============================] - 2s 49ms/step - loss: 0.0219 - accuracy: 0.9972 - val_loss: 0.2235 - val_accuracy: 0.9333
Epoch 27/50
45/45 [==============================] - 2s 49ms/step - loss: 0.0169 - accuracy: 1.0000 - val_loss: 0.2224 - val_accuracy: 0.9222
Epoch 28/50
45/45 [==============================] - 2s 48ms/step - loss: 0.0149 - accuracy: 1.0000 - val_loss: 0.2207 - val_accuracy: 0.9278
Epoch 29/50
45/45 [==============================] - 2s 48ms/step - loss: 0.0127 - accuracy: 1.0000 - val_loss: 0.2423 - val_accuracy: 0.9278
Epoch 30/50
45/45 [==============================] - 2s 53ms/step - loss: 0.0144 - accuracy: 1.0000 - val_loss: 0.2309 - val_accuracy: 0.9167
Epoch 31/50
45/45 [==============================] - 2s 53ms/step - loss: 0.0137 - accuracy: 1.0000 - val_loss: 0.2394 - val_accuracy: 0.9278
Epoch 32/50
45/45 [==============================] - 2s 53ms/step - loss: 0.0140 - accuracy: 0.9986 - val_loss: 0.2376 - val_accuracy: 0.9278
Epoch 33/50
45/45 [==============================] - 2s 54ms/step - loss: 0.0146 - accuracy: 1.0000 - val_loss: 0.2295 - val_accuracy: 0.9167
Epoch 34/50
45/45 [==============================] - 2s 48ms/step - loss: 0.0094 - accuracy: 1.0000 - val_loss: 0.2444 - val_accuracy: 0.9222
Epoch 35/50
45/45 [==============================] - 2s 48ms/step - loss: 0.0083 - accuracy: 1.0000 - val_loss: 0.2348 - val_accuracy: 0.9278
Epoch 36/50
45/45 [==============================] - 2s 48ms/step - loss: 0.0085 - accuracy: 1.0000 - val_loss: 0.2504 - val_accuracy: 0.9278
Epoch 37/50
45/45 [==============================] - 2s 48ms/step - loss: 0.0072 - accuracy: 1.0000 - val_loss: 0.2452 - val_accuracy: 0.9278
Epoch 38/50
45/45 [==============================] - 2s 53ms/step - loss: 0.0064 - accuracy: 1.0000 - val_loss: 0.2455 - val_accuracy: 0.9222
Epoch 39/50
45/45 [==============================] - 2s 54ms/step - loss: 0.0058 - accuracy: 1.0000 - val_loss: 0.2565 - val_accuracy: 0.9278
Epoch 40/50
45/45 [==============================] - 2s 53ms/step - loss: 0.0061 - accuracy: 1.0000 - val_loss: 0.2621 - val_accuracy: 0.9278
Epoch 41/50
45/45 [==============================] - 2s 48ms/step - loss: 0.0054 - accuracy: 1.0000 - val_loss: 0.2567 - val_accuracy: 0.9278
Epoch 42/50
45/45 [==============================] - 2s 48ms/step - loss: 0.0047 - accuracy: 1.0000 - val_loss: 0.2617 - val_accuracy: 0.9167
Epoch 43/50
45/45 [==============================] - 2s 53ms/step - loss: 0.0048 - accuracy: 1.0000 - val_loss: 0.2605 - val_accuracy: 0.9167
Epoch 44/50
45/45 [==============================] - 2s 53ms/step - loss: 0.0049 - accuracy: 1.0000 - val_loss: 0.2533 - val_accuracy: 0.9278
Epoch 45/50
45/45 [==============================] - 2s 54ms/step - loss: 0.0040 - accuracy: 1.0000 - val_loss: 0.2656 - val_accuracy: 0.9111
Epoch 46/50
45/45 [==============================] - 2s 48ms/step - loss: 0.0044 - accuracy: 1.0000 - val_loss: 0.2573 - val_accuracy: 0.9333
Epoch 47/50
45/45 [==============================] - 2s 53ms/step - loss: 0.0037 - accuracy: 1.0000 - val_loss: 0.2593 - val_accuracy: 0.9167
Epoch 48/50
45/45 [==============================] - 2s 52ms/step - loss: 0.0034 - accuracy: 1.0000 - val_loss: 0.2674 - val_accuracy: 0.9222
Epoch 49/50
45/45 [==============================] - 2s 47ms/step - loss: 0.0035 - accuracy: 1.0000 - val_loss: 0.2685 - val_accuracy: 0.9278
Epoch 50/50
45/45 [==============================] - 2s 53ms/step - loss: 0.0034 - accuracy: 1.0000 - val_loss: 0.2593 - val_accuracy: 0.9167
8/8 [==============================] - 1s 69ms/step
Epoch 1/50
23/23 [==============================] - 4s 113ms/step - loss: 1.0535 - accuracy: 0.5514 - val_loss: 0.7965 - val_accuracy: 0.6833
Epoch 2/50
23/23 [==============================] - 2s 98ms/step - loss: 0.5864 - accuracy: 0.8153 - val_loss: 0.5241 - val_accuracy: 0.7889
Epoch 3/50
23/23 [==============================] - 2s 99ms/step - loss: 0.4311 - accuracy: 0.8653 - val_loss: 0.4520 - val_accuracy: 0.8389
Epoch 4/50
23/23 [==============================] - 2s 100ms/step - loss: 0.3393 - accuracy: 0.8917 - val_loss: 0.4407 - val_accuracy: 0.8000
Epoch 5/50
23/23 [==============================] - 2s 86ms/step - loss: 0.3121 - accuracy: 0.8972 - val_loss: 0.3606 - val_accuracy: 0.8611
Epoch 6/50
23/23 [==============================] - 2s 98ms/step - loss: 0.2465 - accuracy: 0.9222 - val_loss: 0.3411 - val_accuracy: 0.8722
Epoch 7/50
23/23 [==============================] - 2s 98ms/step - loss: 0.2163 - accuracy: 0.9347 - val_loss: 0.3223 - val_accuracy: 0.9000
Epoch 8/50
23/23 [==============================] - 2s 87ms/step - loss: 0.1860 - accuracy: 0.9542 - val_loss: 0.3203 - val_accuracy: 0.8833
Epoch 9/50
23/23 [==============================] - 2s 99ms/step - loss: 0.1709 - accuracy: 0.9472 - val_loss: 0.2795 - val_accuracy: 0.8944
Epoch 10/50
23/23 [==============================] - 2s 101ms/step - loss: 0.1537 - accuracy: 0.9611 - val_loss: 0.2653 - val_accuracy: 0.9000
Epoch 11/50
23/23 [==============================] - 2s 98ms/step - loss: 0.1402 - accuracy: 0.9653 - val_loss: 0.2582 - val_accuracy: 0.9167
Epoch 12/50
23/23 [==============================] - 2s 98ms/step - loss: 0.1222 - accuracy: 0.9694 - val_loss: 0.2444 - val_accuracy: 0.9222
Epoch 13/50
23/23 [==============================] - 2s 98ms/step - loss: 0.1076 - accuracy: 0.9819 - val_loss: 0.2537 - val_accuracy: 0.9056
Epoch 14/50
23/23 [==============================] - 2s 89ms/step - loss: 0.1026 - accuracy: 0.9819 - val_loss: 0.2410 - val_accuracy: 0.9222
Epoch 15/50
23/23 [==============================] - 2s 99ms/step - loss: 0.0927 - accuracy: 0.9847 - val_loss: 0.2557 - val_accuracy: 0.9167
Epoch 16/50
23/23 [==============================] - 2s 100ms/step - loss: 0.0881 - accuracy: 0.9778 - val_loss: 0.2373 - val_accuracy: 0.9278
Epoch 17/50
23/23 [==============================] - 2s 87ms/step - loss: 0.0762 - accuracy: 0.9861 - val_loss: 0.2323 - val_accuracy: 0.9111
Epoch 18/50
23/23 [==============================] - 2s 98ms/step - loss: 0.0706 - accuracy: 0.9833 - val_loss: 0.2220 - val_accuracy: 0.9111
Epoch 19/50
23/23 [==============================] - 2s 87ms/step - loss: 0.0635 - accuracy: 0.9861 - val_loss: 0.2312 - val_accuracy: 0.9167
Epoch 20/50
23/23 [==============================] - 2s 87ms/step - loss: 0.0580 - accuracy: 0.9917 - val_loss: 0.2292 - val_accuracy: 0.9056
Epoch 21/50
23/23 [==============================] - 2s 87ms/step - loss: 0.0524 - accuracy: 0.9903 - val_loss: 0.2303 - val_accuracy: 0.9222
Epoch 22/50
23/23 [==============================] - 2s 100ms/step - loss: 0.0515 - accuracy: 0.9931 - val_loss: 0.2247 - val_accuracy: 0.9111
Epoch 23/50
23/23 [==============================] - 2s 101ms/step - loss: 0.0482 - accuracy: 0.9944 - val_loss: 0.2160 - val_accuracy: 0.9222
Epoch 24/50
23/23 [==============================] - 2s 87ms/step - loss: 0.0441 - accuracy: 0.9972 - val_loss: 0.2188 - val_accuracy: 0.9222
Epoch 25/50
23/23 [==============================] - 2s 87ms/step - loss: 0.0381 - accuracy: 0.9986 - val_loss: 0.2182 - val_accuracy: 0.9167
Epoch 26/50
23/23 [==============================] - 2s 87ms/step - loss: 0.0364 - accuracy: 0.9986 - val_loss: 0.2244 - val_accuracy: 0.9278
Epoch 27/50
23/23 [==============================] - 2s 98ms/step - loss: 0.0355 - accuracy: 1.0000 - val_loss: 0.2255 - val_accuracy: 0.9000
Epoch 28/50
23/23 [==============================] - 2s 99ms/step - loss: 0.0322 - accuracy: 0.9986 - val_loss: 0.2281 - val_accuracy: 0.9111
Epoch 29/50
23/23 [==============================] - 2s 100ms/step - loss: 0.0277 - accuracy: 1.0000 - val_loss: 0.2211 - val_accuracy: 0.9167
Epoch 30/50
23/23 [==============================] - 2s 86ms/step - loss: 0.0266 - accuracy: 0.9986 - val_loss: 0.2260 - val_accuracy: 0.9167
Epoch 31/50
23/23 [==============================] - 2s 98ms/step - loss: 0.0248 - accuracy: 0.9986 - val_loss: 0.2149 - val_accuracy: 0.9278
Epoch 32/50
23/23 [==============================] - 2s 86ms/step - loss: 0.0234 - accuracy: 1.0000 - val_loss: 0.2141 - val_accuracy: 0.9333
Epoch 33/50
23/23 [==============================] - 2s 86ms/step - loss: 0.0211 - accuracy: 1.0000 - val_loss: 0.2306 - val_accuracy: 0.9111
Epoch 34/50
23/23 [==============================] - 2s 98ms/step - loss: 0.0221 - accuracy: 1.0000 - val_loss: 0.2385 - val_accuracy: 0.9056
Epoch 35/50
23/23 [==============================] - 2s 88ms/step - loss: 0.0221 - accuracy: 0.9986 - val_loss: 0.2246 - val_accuracy: 0.9278
Epoch 36/50
23/23 [==============================] - 2s 100ms/step - loss: 0.0239 - accuracy: 0.9986 - val_loss: 0.2206 - val_accuracy: 0.9278
Epoch 37/50
23/23 [==============================] - 2s 98ms/step - loss: 0.0165 - accuracy: 1.0000 - val_loss: 0.2276 - val_accuracy: 0.9222
Epoch 38/50
23/23 [==============================] - 2s 86ms/step - loss: 0.0146 - accuracy: 1.0000 - val_loss: 0.2331 - val_accuracy: 0.9056
Epoch 39/50
23/23 [==============================] - 2s 86ms/step - loss: 0.0148 - accuracy: 1.0000 - val_loss: 0.2449 - val_accuracy: 0.9167
Epoch 40/50
23/23 [==============================] - 2s 97ms/step - loss: 0.0130 - accuracy: 1.0000 - val_loss: 0.2350 - val_accuracy: 0.9278
Epoch 41/50
23/23 [==============================] - 2s 99ms/step - loss: 0.0127 - accuracy: 1.0000 - val_loss: 0.2327 - val_accuracy: 0.9111
Epoch 42/50
23/23 [==============================] - 2s 100ms/step - loss: 0.0113 - accuracy: 1.0000 - val_loss: 0.2428 - val_accuracy: 0.9278
Epoch 43/50
23/23 [==============================] - 2s 98ms/step - loss: 0.0111 - accuracy: 1.0000 - val_loss: 0.2269 - val_accuracy: 0.9222
Epoch 44/50
23/23 [==============================] - 2s 100ms/step - loss: 0.0114 - accuracy: 1.0000 - val_loss: 0.2474 - val_accuracy: 0.9167
Epoch 45/50
23/23 [==============================] - 2s 98ms/step - loss: 0.0112 - accuracy: 1.0000 - val_loss: 0.2371 - val_accuracy: 0.9167
Epoch 46/50
23/23 [==============================] - 2s 98ms/step - loss: 0.0095 - accuracy: 1.0000 - val_loss: 0.2409 - val_accuracy: 0.9278
Epoch 47/50
23/23 [==============================] - 2s 98ms/step - loss: 0.0090 - accuracy: 1.0000 - val_loss: 0.2445 - val_accuracy: 0.9222
Epoch 48/50
23/23 [==============================] - 2s 100ms/step - loss: 0.0094 - accuracy: 1.0000 - val_loss: 0.2448 - val_accuracy: 0.9222
Epoch 49/50
23/23 [==============================] - 2s 98ms/step - loss: 0.0080 - accuracy: 1.0000 - val_loss: 0.2480 - val_accuracy: 0.9111
Epoch 50/50
23/23 [==============================] - 2s 86ms/step - loss: 0.0081 - accuracy: 1.0000 - val_loss: 0.2464 - val_accuracy: 0.9222
8/8 [==============================] - 1s 62ms/step
Epoch 1/50
12/12 [==============================] - 4s 210ms/step - loss: 1.1441 - accuracy: 0.5042 - val_loss: 0.8961 - val_accuracy: 0.6722
Epoch 2/50
12/12 [==============================] - 2s 183ms/step - loss: 0.7357 - accuracy: 0.7611 - val_loss: 0.6970 - val_accuracy: 0.7500
Epoch 3/50
12/12 [==============================] - 2s 187ms/step - loss: 0.5721 - accuracy: 0.8139 - val_loss: 0.5639 - val_accuracy: 0.7611
Epoch 4/50
12/12 [==============================] - 2s 182ms/step - loss: 0.4598 - accuracy: 0.8431 - val_loss: 0.4785 - val_accuracy: 0.8278
Epoch 5/50
12/12 [==============================] - 2s 159ms/step - loss: 0.3773 - accuracy: 0.8750 - val_loss: 0.4351 - val_accuracy: 0.8500
Epoch 6/50
12/12 [==============================] - 2s 181ms/step - loss: 0.3388 - accuracy: 0.8958 - val_loss: 0.4022 - val_accuracy: 0.8667
Epoch 7/50
12/12 [==============================] - 2s 182ms/step - loss: 0.2948 - accuracy: 0.9069 - val_loss: 0.3969 - val_accuracy: 0.8333
Epoch 8/50
12/12 [==============================] - 2s 182ms/step - loss: 0.2695 - accuracy: 0.9167 - val_loss: 0.3791 - val_accuracy: 0.8667
Epoch 9/50
12/12 [==============================] - 2s 187ms/step - loss: 0.2597 - accuracy: 0.9292 - val_loss: 0.3339 - val_accuracy: 0.8722
Epoch 10/50
12/12 [==============================] - 2s 182ms/step - loss: 0.2266 - accuracy: 0.9333 - val_loss: 0.3173 - val_accuracy: 0.8778
Epoch 11/50
12/12 [==============================] - 2s 183ms/step - loss: 0.2021 - accuracy: 0.9333 - val_loss: 0.3123 - val_accuracy: 0.9111
Epoch 12/50
12/12 [==============================] - 2s 182ms/step - loss: 0.1970 - accuracy: 0.9458 - val_loss: 0.3116 - val_accuracy: 0.8944
Epoch 13/50
12/12 [==============================] - 2s 157ms/step - loss: 0.1653 - accuracy: 0.9569 - val_loss: 0.2862 - val_accuracy: 0.9056
Epoch 14/50
12/12 [==============================] - 2s 182ms/step - loss: 0.1540 - accuracy: 0.9611 - val_loss: 0.2735 - val_accuracy: 0.9111
Epoch 15/50
12/12 [==============================] - 2s 160ms/step - loss: 0.1459 - accuracy: 0.9597 - val_loss: 0.2657 - val_accuracy: 0.9167
Epoch 16/50
12/12 [==============================] - 2s 187ms/step - loss: 0.1396 - accuracy: 0.9653 - val_loss: 0.2647 - val_accuracy: 0.9056
Epoch 17/50
12/12 [==============================] - 2s 181ms/step - loss: 0.1253 - accuracy: 0.9708 - val_loss: 0.2614 - val_accuracy: 0.9111
Epoch 18/50
12/12 [==============================] - 2s 181ms/step - loss: 0.1198 - accuracy: 0.9764 - val_loss: 0.2493 - val_accuracy: 0.9056
Epoch 19/50
12/12 [==============================] - 2s 158ms/step - loss: 0.1057 - accuracy: 0.9778 - val_loss: 0.2547 - val_accuracy: 0.9222
Epoch 20/50
12/12 [==============================] - 2s 182ms/step - loss: 0.1062 - accuracy: 0.9750 - val_loss: 0.2402 - val_accuracy: 0.9056
Epoch 21/50
12/12 [==============================] - 2s 158ms/step - loss: 0.0999 - accuracy: 0.9806 - val_loss: 0.2383 - val_accuracy: 0.9222
Epoch 22/50
12/12 [==============================] - 2s 187ms/step - loss: 0.0900 - accuracy: 0.9833 - val_loss: 0.2307 - val_accuracy: 0.9222
Epoch 23/50
12/12 [==============================] - 2s 159ms/step - loss: 0.0853 - accuracy: 0.9833 - val_loss: 0.2388 - val_accuracy: 0.9167
Epoch 24/50
12/12 [==============================] - 2s 159ms/step - loss: 0.0805 - accuracy: 0.9847 - val_loss: 0.2314 - val_accuracy: 0.9167
Epoch 25/50
12/12 [==============================] - 2s 158ms/step - loss: 0.0763 - accuracy: 0.9847 - val_loss: 0.2232 - val_accuracy: 0.9278
Epoch 26/50
12/12 [==============================] - 2s 181ms/step - loss: 0.0736 - accuracy: 0.9903 - val_loss: 0.2333 - val_accuracy: 0.9222
Epoch 27/50
12/12 [==============================] - 2s 182ms/step - loss: 0.0716 - accuracy: 0.9931 - val_loss: 0.2300 - val_accuracy: 0.9222
Epoch 28/50
12/12 [==============================] - 2s 159ms/step - loss: 0.0673 - accuracy: 0.9875 - val_loss: 0.2323 - val_accuracy: 0.9111
Epoch 29/50
12/12 [==============================] - 2s 162ms/step - loss: 0.0576 - accuracy: 0.9944 - val_loss: 0.2205 - val_accuracy: 0.9167
Epoch 30/50
12/12 [==============================] - 2s 183ms/step - loss: 0.0559 - accuracy: 0.9944 - val_loss: 0.2247 - val_accuracy: 0.9278
Epoch 31/50
12/12 [==============================] - 2s 158ms/step - loss: 0.0552 - accuracy: 0.9931 - val_loss: 0.2246 - val_accuracy: 0.9222
Epoch 32/50
12/12 [==============================] - 2s 182ms/step - loss: 0.0522 - accuracy: 0.9944 - val_loss: 0.2280 - val_accuracy: 0.9167
Epoch 33/50
12/12 [==============================] - 2s 182ms/step - loss: 0.0481 - accuracy: 0.9944 - val_loss: 0.2128 - val_accuracy: 0.9167
Epoch 34/50
12/12 [==============================] - 2s 181ms/step - loss: 0.0448 - accuracy: 0.9958 - val_loss: 0.2164 - val_accuracy: 0.9167
Epoch 35/50
12/12 [==============================] - 2s 183ms/step - loss: 0.0418 - accuracy: 0.9958 - val_loss: 0.2153 - val_accuracy: 0.9167
Epoch 36/50
12/12 [==============================] - 2s 163ms/step - loss: 0.0388 - accuracy: 0.9972 - val_loss: 0.2233 - val_accuracy: 0.9111
Epoch 37/50
12/12 [==============================] - 2s 182ms/step - loss: 0.0385 - accuracy: 0.9972 - val_loss: 0.2163 - val_accuracy: 0.9111
Epoch 38/50
12/12 [==============================] - 2s 182ms/step - loss: 0.0368 - accuracy: 0.9986 - val_loss: 0.2198 - val_accuracy: 0.9278
Epoch 39/50
12/12 [==============================] - 2s 158ms/step - loss: 0.0379 - accuracy: 0.9944 - val_loss: 0.2309 - val_accuracy: 0.9167
Epoch 40/50
12/12 [==============================] - 2s 182ms/step - loss: 0.0319 - accuracy: 0.9972 - val_loss: 0.2196 - val_accuracy: 0.9167
Epoch 41/50
12/12 [==============================] - 2s 159ms/step - loss: 0.0306 - accuracy: 1.0000 - val_loss: 0.2277 - val_accuracy: 0.9278
Epoch 42/50
12/12 [==============================] - 2s 163ms/step - loss: 0.0300 - accuracy: 0.9986 - val_loss: 0.2281 - val_accuracy: 0.9111
Epoch 43/50
12/12 [==============================] - 2s 161ms/step - loss: 0.0297 - accuracy: 0.9958 - val_loss: 0.2172 - val_accuracy: 0.9278
Epoch 44/50
12/12 [==============================] - 2s 157ms/step - loss: 0.0297 - accuracy: 1.0000 - val_loss: 0.2229 - val_accuracy: 0.9333
Epoch 45/50
12/12 [==============================] - 2s 158ms/step - loss: 0.0293 - accuracy: 1.0000 - val_loss: 0.2368 - val_accuracy: 0.9111
Epoch 46/50
12/12 [==============================] - 2s 160ms/step - loss: 0.0272 - accuracy: 1.0000 - val_loss: 0.2277 - val_accuracy: 0.9222
Epoch 47/50
12/12 [==============================] - 2s 184ms/step - loss: 0.0249 - accuracy: 1.0000 - val_loss: 0.2230 - val_accuracy: 0.9222
Epoch 48/50
12/12 [==============================] - 2s 182ms/step - loss: 0.0236 - accuracy: 1.0000 - val_loss: 0.2203 - val_accuracy: 0.9222
Epoch 49/50
12/12 [==============================] - 2s 186ms/step - loss: 0.0214 - accuracy: 1.0000 - val_loss: 0.2229 - val_accuracy: 0.9111
Epoch 50/50
12/12 [==============================] - 2s 182ms/step - loss: 0.0215 - accuracy: 1.0000 - val_loss: 0.2396 - val_accuracy: 0.9111
8/8 [==============================] - 1s 68ms/step
Epoch 1/50
6/6 [==============================] - 4s 426ms/step - loss: 1.2397 - accuracy: 0.4819 - val_loss: 1.0035 - val_accuracy: 0.7111
Epoch 2/50
6/6 [==============================] - 2s 317ms/step - loss: 0.8804 - accuracy: 0.7542 - val_loss: 0.7664 - val_accuracy: 0.7222
Epoch 3/50
6/6 [==============================] - 2s 322ms/step - loss: 0.6904 - accuracy: 0.7514 - val_loss: 0.6531 - val_accuracy: 0.7444
Epoch 4/50
6/6 [==============================] - 2s 373ms/step - loss: 0.5684 - accuracy: 0.8194 - val_loss: 0.5893 - val_accuracy: 0.7778
Epoch 5/50
6/6 [==============================] - 2s 372ms/step - loss: 0.4963 - accuracy: 0.8361 - val_loss: 0.5124 - val_accuracy: 0.7944
Epoch 6/50
6/6 [==============================] - 2s 371ms/step - loss: 0.4265 - accuracy: 0.8611 - val_loss: 0.4865 - val_accuracy: 0.8167
Epoch 7/50
6/6 [==============================] - 2s 319ms/step - loss: 0.3816 - accuracy: 0.8750 - val_loss: 0.4339 - val_accuracy: 0.8444
Epoch 8/50
6/6 [==============================] - 2s 324ms/step - loss: 0.3445 - accuracy: 0.8958 - val_loss: 0.4173 - val_accuracy: 0.8278
Epoch 9/50
6/6 [==============================] - 2s 324ms/step - loss: 0.3168 - accuracy: 0.8958 - val_loss: 0.3871 - val_accuracy: 0.8444
Epoch 10/50
6/6 [==============================] - 2s 385ms/step - loss: 0.2920 - accuracy: 0.9014 - val_loss: 0.3665 - val_accuracy: 0.8611
Epoch 11/50
6/6 [==============================] - 2s 379ms/step - loss: 0.2699 - accuracy: 0.9222 - val_loss: 0.3665 - val_accuracy: 0.8611
Epoch 12/50
6/6 [==============================] - 2s 323ms/step - loss: 0.2621 - accuracy: 0.9125 - val_loss: 0.3409 - val_accuracy: 0.8944
Epoch 13/50
6/6 [==============================] - 2s 326ms/step - loss: 0.2358 - accuracy: 0.9292 - val_loss: 0.3345 - val_accuracy: 0.8778
Epoch 14/50
6/6 [==============================] - 2s 327ms/step - loss: 0.2218 - accuracy: 0.9319 - val_loss: 0.3168 - val_accuracy: 0.8889
Epoch 15/50
6/6 [==============================] - 2s 328ms/step - loss: 0.2046 - accuracy: 0.9431 - val_loss: 0.3099 - val_accuracy: 0.8944
Epoch 16/50
6/6 [==============================] - 2s 379ms/step - loss: 0.1927 - accuracy: 0.9444 - val_loss: 0.3000 - val_accuracy: 0.9056
Epoch 17/50
6/6 [==============================] - 2s 382ms/step - loss: 0.1766 - accuracy: 0.9500 - val_loss: 0.2934 - val_accuracy: 0.8944
Epoch 18/50
6/6 [==============================] - 2s 315ms/step - loss: 0.1700 - accuracy: 0.9583 - val_loss: 0.2849 - val_accuracy: 0.8944
Epoch 19/50
6/6 [==============================] - 2s 368ms/step - loss: 0.1567 - accuracy: 0.9625 - val_loss: 0.2811 - val_accuracy: 0.8944
Epoch 20/50
6/6 [==============================] - 2s 319ms/step - loss: 0.1503 - accuracy: 0.9681 - val_loss: 0.2747 - val_accuracy: 0.8944
Epoch 21/50
6/6 [==============================] - 2s 370ms/step - loss: 0.1437 - accuracy: 0.9667 - val_loss: 0.2709 - val_accuracy: 0.9056
Epoch 22/50
6/6 [==============================] - 2s 364ms/step - loss: 0.1360 - accuracy: 0.9681 - val_loss: 0.2648 - val_accuracy: 0.9000
Epoch 23/50
6/6 [==============================] - 2s 328ms/step - loss: 0.1287 - accuracy: 0.9736 - val_loss: 0.2609 - val_accuracy: 0.9000
Epoch 24/50
6/6 [==============================] - 2s 331ms/step - loss: 0.1227 - accuracy: 0.9722 - val_loss: 0.2548 - val_accuracy: 0.9000
Epoch 25/50
6/6 [==============================] - 2s 315ms/step - loss: 0.1172 - accuracy: 0.9764 - val_loss: 0.2560 - val_accuracy: 0.9000
Epoch 26/50
6/6 [==============================] - 2s 372ms/step - loss: 0.1123 - accuracy: 0.9722 - val_loss: 0.2483 - val_accuracy: 0.9000
Epoch 27/50
6/6 [==============================] - 2s 372ms/step - loss: 0.1060 - accuracy: 0.9736 - val_loss: 0.2437 - val_accuracy: 0.9000
Epoch 28/50
6/6 [==============================] - 2s 366ms/step - loss: 0.0995 - accuracy: 0.9806 - val_loss: 0.2451 - val_accuracy: 0.9056
Epoch 29/50
6/6 [==============================] - 2s 365ms/step - loss: 0.0967 - accuracy: 0.9819 - val_loss: 0.2378 - val_accuracy: 0.9167
Epoch 30/50
6/6 [==============================] - 2s 376ms/step - loss: 0.0922 - accuracy: 0.9819 - val_loss: 0.2392 - val_accuracy: 0.9000
Epoch 31/50
6/6 [==============================] - 2s 322ms/step - loss: 0.0871 - accuracy: 0.9861 - val_loss: 0.2359 - val_accuracy: 0.9111
Epoch 32/50
6/6 [==============================] - 2s 362ms/step - loss: 0.0857 - accuracy: 0.9833 - val_loss: 0.2329 - val_accuracy: 0.9111
Epoch 33/50
6/6 [==============================] - 2s 367ms/step - loss: 0.0793 - accuracy: 0.9847 - val_loss: 0.2374 - val_accuracy: 0.9056
Epoch 34/50
6/6 [==============================] - 2s 367ms/step - loss: 0.0774 - accuracy: 0.9889 - val_loss: 0.2308 - val_accuracy: 0.9056
Epoch 35/50
6/6 [==============================] - 2s 365ms/step - loss: 0.0738 - accuracy: 0.9875 - val_loss: 0.2292 - val_accuracy: 0.9167
Epoch 36/50
6/6 [==============================] - 2s 313ms/step - loss: 0.0722 - accuracy: 0.9903 - val_loss: 0.2288 - val_accuracy: 0.9111
Epoch 37/50
6/6 [==============================] - 2s 375ms/step - loss: 0.0689 - accuracy: 0.9903 - val_loss: 0.2254 - val_accuracy: 0.9056
Epoch 38/50
6/6 [==============================] - 2s 372ms/step - loss: 0.0645 - accuracy: 0.9903 - val_loss: 0.2252 - val_accuracy: 0.9167
Epoch 39/50
6/6 [==============================] - 2s 369ms/step - loss: 0.0614 - accuracy: 0.9944 - val_loss: 0.2226 - val_accuracy: 0.9167
Epoch 40/50
6/6 [==============================] - 2s 316ms/step - loss: 0.0613 - accuracy: 0.9931 - val_loss: 0.2284 - val_accuracy: 0.9056
Epoch 41/50
6/6 [==============================] - 2s 311ms/step - loss: 0.0596 - accuracy: 0.9917 - val_loss: 0.2231 - val_accuracy: 0.9167
Epoch 42/50
6/6 [==============================] - 2s 315ms/step - loss: 0.0592 - accuracy: 0.9917 - val_loss: 0.2294 - val_accuracy: 0.9056
Epoch 43/50
6/6 [==============================] - 2s 367ms/step - loss: 0.0527 - accuracy: 0.9944 - val_loss: 0.2224 - val_accuracy: 0.9167
Epoch 44/50
6/6 [==============================] - 2s 336ms/step - loss: 0.0518 - accuracy: 0.9944 - val_loss: 0.2264 - val_accuracy: 0.9056
Epoch 45/50
6/6 [==============================] - 2s 369ms/step - loss: 0.0491 - accuracy: 0.9944 - val_loss: 0.2181 - val_accuracy: 0.9167
Epoch 46/50
6/6 [==============================] - 2s 368ms/step - loss: 0.0481 - accuracy: 0.9958 - val_loss: 0.2206 - val_accuracy: 0.9111
Epoch 47/50
6/6 [==============================] - 2s 319ms/step - loss: 0.0454 - accuracy: 0.9958 - val_loss: 0.2194 - val_accuracy: 0.9167
Epoch 48/50
6/6 [==============================] - 2s 318ms/step - loss: 0.0452 - accuracy: 0.9972 - val_loss: 0.2224 - val_accuracy: 0.9111
Epoch 49/50
6/6 [==============================] - 2s 372ms/step - loss: 0.0427 - accuracy: 0.9972 - val_loss: 0.2146 - val_accuracy: 0.9167
Epoch 50/50
6/6 [==============================] - 2s 373ms/step - loss: 0.0415 - accuracy: 0.9972 - val_loss: 0.2198 - val_accuracy: 0.9167
8/8 [==============================] - 1s 68ms/step
In [47]:
output_for_evaluation=pd.DataFrame(arry,columns=['Epochs','Batch Size', 'Training_accuracy', 'Training_loss', 'Validation_accuracy', 'Validation_loss', 'Accuracy'])
output_for_evaluation
Out[47]:
Epochs Batch Size Training_accuracy Training_loss Validation_accuracy Validation_loss Accuracy
0 5.0 16.0 0.850556 0.431194 0.853333 0.436082 0.906667
1 5.0 32.0 0.822222 0.509676 0.817778 0.481075 0.893333
2 5.0 64.0 0.781389 0.631091 0.787778 0.598430 0.888889
3 5.0 128.0 0.731944 0.766506 0.756667 0.694303 0.857778
4 10.0 16.0 0.902222 0.294061 0.866667 0.349559 0.933333
5 10.0 32.0 0.877778 0.358006 0.860000 0.394937 0.893333
6 10.0 64.0 0.833333 0.460020 0.828333 0.473029 0.893333
7 10.0 128.0 0.809583 0.557774 0.782222 0.567088 0.888889
8 20.0 16.0 0.951389 0.161430 0.903611 0.277583 0.915556
9 20.0 32.0 0.925764 0.231237 0.877778 0.335412 0.911111
10 20.0 64.0 0.905694 0.297759 0.856667 0.379958 0.928889
11 20.0 128.0 0.870694 0.392833 0.832778 0.446839 0.915556
12 50.0 16.0 0.977194 0.079492 0.909000 0.268689 0.928889
13 50.0 32.0 0.970278 0.106160 0.903000 0.268711 0.920000
14 50.0 64.0 0.956611 0.151825 0.896889 0.287919 0.924444
15 50.0 128.0 0.941611 0.201187 0.882222 0.315065 0.928889
In [48]:
import matplotlib.pyplot as plt

# Extract the data for visualization
base_epochs = output_for_evaluation['Epochs']
base_batch_sizes = output_for_evaluation['Batch Size']
base_training_loss = output_for_evaluation['Training_loss']
base_validation_loss = output_for_evaluation['Validation_loss']

# Group the data by batch size
batch_sizes = set(base_batch_sizes)
grouped_data = {}
for batch_size in batch_sizes:
    idx = base_batch_sizes == batch_size
    grouped_data[batch_size] = {
        'epochs': base_epochs[idx],
        'training_loss': base_training_loss[idx],
        'validation_loss': base_validation_loss[idx]
    }

# Create subplots
fig, axes = plt.subplots(2, 2, figsize=(12, 8))
axes = axes.flatten()

for m, (batch_size, data) in enumerate(grouped_data.items()):
    ax = axes[m]
    ax.plot(data['epochs'], data['training_loss'], marker='o', label=f'Training Loss (Batch Size {batch_size})')
    ax.plot(data['epochs'], data['validation_loss'], marker='o', label=f'Validation Loss (Batch Size {batch_size})')
    ax.set_xlabel('Epochs')
    ax.set_ylabel('Loss')
    ax.set_title(f'Batch Size {batch_size}')
    ax.legend()
    ax.grid(True)

plt.tight_layout()
plt.show()
In [49]:
import matplotlib.pyplot as plt

# Extract the data for visualization
base_epochs = output_for_evaluation['Epochs']
base_batch_sizes = output_for_evaluation['Batch Size']
base_training_accuracy = output_for_evaluation['Training_accuracy']
base_validation_accuracy = output_for_evaluation['Validation_accuracy']
base_test_accuracy = output_for_evaluation['Accuracy']

# Group the data by batch size
batch_sizes = set(base_batch_sizes)
grouped_data = {}
for batch_size in batch_sizes:
    idx = base_batch_sizes == batch_size
    grouped_data[batch_size] = {
        'epochs': base_epochs[idx],
        'training_accuracy': base_training_accuracy[idx],
        'validation_accuracy': base_validation_accuracy[idx],
        'test_accuracy': base_test_accuracy[idx]
    }

# Create subplots
fig, axes = plt.subplots(2, 2, figsize=(12, 8))
axes = axes.flatten()

for m, (batch_size, data) in enumerate(grouped_data.items()):
    ax = axes[m]
    ax.plot(data['epochs'], data['training_accuracy'], marker='o', label=f'Training Accuracy (Batch Size {batch_size})')
    ax.plot(data['epochs'], data['validation_accuracy'], marker='o', label=f'Validation Accuracy (Batch Size {batch_size})')
    ax.plot(data['epochs'], data['test_accuracy'], marker='o', label=f'Test Accuracy (Batch Size {batch_size})')
    ax.set_xlabel('Epochs')
    ax.set_ylabel('Accuracy')
    ax.set_title(f'Batch Size {batch_size}')
    ax.legend()
    ax.grid(True)

plt.tight_layout()
plt.show()

Batch Size = 16:

Observation
Training Accuracy: Higher than validation accuracy from the beginning. Rapidly increases as epochs increase.
Validation Accuracy: Slight increases.
Test Accuracy: Slight increases.

Interpretation: This behavior suggests that the model may be overfitting to the training data. The initial higher training accuracy indicates that the model is able to fit well to the training data. However, as the number of epochs increases, the model starts to memorize the training samples and becomes too specialized, resulting in a minized increase in validation and test accuracies. The validation and test accuracies indicate that the model's ability to generalize to unseen data diminishes over time. This overfitting behavior could be an indication that the model is too complex.

Batch Size = 32:

Observation
Training Accuracy: Higher than validation accuracy from the beginning. Rapidly increases as epochs increase.
Validation Accuracy: Increases.
Test Accuracy: Slight increases.

Interpretation: Similar to Batch Size = 16, this behavior suggests that the model may be overfitting to the training data. The higher training accuracy from the beginning indicates that the model is able to fit well to the training data. However, as the number of epochs increases, the model starts to overfit and its performance on unseen validation and test data decreases. This could be an indication that the model is too complex.

Batch Size = 64:

Observation
Training Accuracy: Higher than validation accuracy from the beginning. Rapidly increases as epochs increase.
Validation Accuracy: Increases.
Test Accuracy: Decreases.

Interpretation: Similar to Batch Sizes 16 and 32, this behavior suggests that the model may be overfitting to the training data. The higher training accuracy from the beginning indicates that the model is able to fit well to the training data. However, as the number of epochs increases, the model starts to overfit and its performance on unseen validation and test data decreases.

Batch Size = 128:

Observation
Training Accuracy: Higher than validation accuracy from the beginning. Rapidly increases as epochs increase.
Validation Accuracy: Increases.
Test Accuracy: Slight increases.

Interpretation: Similar to Batch Sizes 16, 32, and 64, this behavior suggests that the model may be overfitting to the training data. The higher training accuracy from the beginning indicates that the model is able to fit well to the training data. However, as the number of epochs increases, the model starts to overfit and its performance on unseen validation and test data decreases.

In [50]:
import matplotlib.pyplot as plt

# Extract the data for visualization
base_epochs = output_for_evaluation['Epochs']
base_batch_sizes = output_for_evaluation['Batch Size']
base_test_accuracy = output_for_evaluation['Accuracy']

# Group the data by batch size
batch_sizes = set(base_batch_sizes)
grouped_data = {}
for batch_size in batch_sizes:
    idx = base_batch_sizes == batch_size
    grouped_data[batch_size] = {
        'epochs': base_epochs[idx],
        'test_accuracy': base_test_accuracy[idx]
    }

# Create the plot
plt.figure(figsize=(10, 6))

for batch_size, data in grouped_data.items():
    plt.plot(data['epochs'], data['test_accuracy'], marker='o', label=f'Test Accuracy (Batch Size {batch_size}')

plt.xlabel('Epochs')
plt.ylabel('Test Accuracy')
plt.title('Test Accuracy vs. Epochs for Different Batch Sizes')
plt.legend()
plt.grid(True)
plt.show()

Discussion¶

The above plots indicates several interesting phenomenons.

First, from the plots regarding accuracy, loss from the training and validation set, it might well indicate a potential issue of overfitting at almost every combination of batch and epoches.

In addition, though the test accurracy still looks great for until epoch=50, it is still worthy to note its potential diminishing trend as epoch increases further.

Therefore, with the observations in mind, in appears that, regardless of the batch size and epochs numbers, the base model in general is overfitting , where it fits the model too well and captures excessive complexities and nuances present in the data, starting to lead to a capture of excessive complex relationship within the training examples, as the training accuracy is almost larger than the testing accuracy

Some techniques can be implemented here in this case:

  1. Increase training samples
  2. Regularization
  3. Early Stopping

Write Some necessary functions that help for automation of modellings¶

In [36]:
def get_outputs(combinations,X,y,modelling,df):
  arry=np.zeros((len(combinations),7))
  for m in range(len(combinations)):
    arry[m][0]=combinations[m][0]
    arry[m][1]=combinations[m][1]
    preliminary_model_output=list(modelling(X,y,df,combinations[m][0],combinations[m][1]))
    arry[m][2]=np.mean(preliminary_model_output[0])
    arry[m][3]=np.mean(preliminary_model_output[1])
    arry[m][4]=np.mean(preliminary_model_output[2])
    arry[m][5]=np.mean(preliminary_model_output[3])
    arry[m][6]=preliminary_model_output[4]
  
  output_for_evaluation=pd.DataFrame(arry,columns=['Epochs','Batch Size', 'Training_accuracy', 'Training_loss', 'Validation_accuracy', 'Validation_loss', 'Accuracy'])
  return output_for_evaluation
In [37]:
import matplotlib.pyplot as plt
def plot_loss(output_for_evaluation):
  base_epochs = output_for_evaluation['Epochs']
  base_batch_sizes = output_for_evaluation['Batch Size']
  base_training_loss = output_for_evaluation['Training_loss']
  base_validation_loss = output_for_evaluation['Validation_loss']
  
  batch_sizes = set(base_batch_sizes)
  grouped_data = {}
  for batch_size in batch_sizes:
    idx = base_batch_sizes == batch_size
    grouped_data[batch_size] = {
        'epochs': base_epochs[idx],
        'training_loss': base_training_loss[idx],
        'validation_loss': base_validation_loss[idx]
    }

# Create subplots
  fig, axes = plt.subplots(2, 2, figsize=(12, 8))
  axes = axes.flatten()

  for m, (batch_size, data) in enumerate(grouped_data.items()):
    ax = axes[m]
    ax.plot(data['epochs'], data['training_loss'], marker='o', label=f'Training Loss (Batch Size {batch_size})')
    ax.plot(data['epochs'], data['validation_loss'], marker='o', label=f'Validation Loss (Batch Size {batch_size})')
    ax.set_xlabel('Epochs')
    ax.set_ylabel('Loss')
    ax.set_title(f'Batch Size {batch_size}')
    ax.legend()
    ax.grid(True)

  plt.tight_layout()
  plt.show()
In [38]:
import matplotlib.pyplot as plt
def plot_accuracy(output_for_evaluation):
  base_epochs = output_for_evaluation['Epochs']
  base_batch_sizes = output_for_evaluation['Batch Size']
  base_training_accuracy = output_for_evaluation['Training_accuracy']
  base_validation_accuracy = output_for_evaluation['Validation_accuracy']
  base_test_accuracy = output_for_evaluation['Accuracy']
  
  batch_sizes = set(base_batch_sizes)
  grouped_data = {}
  for batch_size in batch_sizes:
    idx = base_batch_sizes == batch_size
    grouped_data[batch_size] = {
        'epochs': base_epochs[idx],
        'training_accuracy': base_training_accuracy[idx],
        'validation_accuracy': base_validation_accuracy[idx],
        'test_accuracy': base_test_accuracy[idx]
    }

  fig, axes = plt.subplots(2, 2, figsize=(12, 8))
  axes = axes.flatten()

  for m, (batch_size, data) in enumerate(grouped_data.items()):
    ax = axes[m]
    ax.plot(data['epochs'], data['training_accuracy'], marker='o', label=f'Training Accuracy (Batch Size {batch_size})')
    ax.plot(data['epochs'], data['validation_accuracy'], marker='o', label=f'Validation Accuracy (Batch Size {batch_size})')
    ax.plot(data['epochs'], data['test_accuracy'], marker='o', label=f'Test Accuracy (Batch Size {batch_size})')
    ax.set_xlabel('Epochs')
    ax.set_ylabel('Accuracy')
    ax.set_title(f'Batch Size {batch_size}')
    ax.legend()
    ax.grid(True)

  plt.tight_layout()
  plt.show()
In [39]:
import matplotlib.pyplot as plt

# Extract the data for visualization
def plot_test_accuracy(output_for_evaluation):
  base_epochs = output_for_evaluation['Epochs']
  base_batch_sizes = output_for_evaluation['Batch Size']
  base_test_accuracy = output_for_evaluation['Accuracy']

# Group the data by batch size
  batch_sizes = set(base_batch_sizes)
  grouped_data = {}
  for batch_size in batch_sizes:
    idx = base_batch_sizes == batch_size
    grouped_data[batch_size] = {
        'epochs': base_epochs[idx],
        'test_accuracy': base_test_accuracy[idx]
    }

# Create the plot
  plt.figure(figsize=(10, 6))
  for batch_size, data in grouped_data.items():
    plt.plot(data['epochs'], data['test_accuracy'], marker='o', label=f'Test Accuracy (Batch Size {batch_size}')

  plt.xlabel('Epochs')
  plt.ylabel('Test Accuracy')
  plt.title('Test Accuracy vs. Epochs for Different Batch Sizes')
  plt.legend()
  plt.grid(True)
  plt.show()

Enhanced Models with Data Augmentation, Regularization, and Early Stopping techniques¶

In [64]:
from tensorflow.keras.layers import Dropout

from tensorflow.keras.preprocessing.image import ImageDataGenerator
from tensorflow.keras.regularizers import l2
from tensorflow.keras.callbacks import EarlyStopping

def enhanced_vgg_16_modelling(X, y, df, epochs, batch_size):
    X_train, X_test, Y_train, Y_test = train_test_split(X, y, test_size=0.2, random_state=42)
    X_train, X_val, Y_train, Y_val = train_test_split(X_train, Y_train, test_size=0.2, random_state=42)

    num_labels = len(np.unique(df['label']))
    y_train = np.eye(num_labels)[Y_train]
    y_test = np.eye(num_labels)[Y_test]
    y_val = np.eye(num_labels)[Y_val]

    # Data augmentation
    train_datagen = ImageDataGenerator(
        rotation_range=20,
        width_shift_range=0.1,
        height_shift_range=0.1,
        shear_range=0.2,
        zoom_range=0.2,
        horizontal_flip=True,
        fill_mode='nearest'
    )
    train_datagen.fit(X_train)

    # Initialize the base model
    base_model = VGG16(weights='imagenet', include_top=False, input_shape=(150, 150, 3))
    for layer in base_model.layers:
        layer.trainable = False

    x = base_model.output
    x = GlobalAveragePooling2D()(x)
    x = Dense(512, activation='relu', kernel_regularizer=l2(0.001))(x)  # Adding L2 regularization
    x = Dropout(0.5)(x)  # Adding Dropout layer
    predictions = Dense(num_labels, activation='softmax')(x)
    model = Model(inputs=base_model.input, outputs=predictions)

    # Compile the model
    model.compile(optimizer='adam', loss='categorical_crossentropy', metrics=['accuracy'])

    # Early stopping
    early_stop = EarlyStopping(monitor='val_loss', patience=3, restore_best_weights=True)

    # Fit the model with augmented data
    history = model.fit(
        train_datagen.flow(X_train, y_train, batch_size=batch_size),
        epochs=epochs,
        validation_data=(X_val, y_val),
        callbacks=[early_stop]
    )

    training_accuracy = history.history['accuracy']
    training_loss = history.history['loss']
    validation_accuracy = history.history['val_accuracy']
    validation_loss = history.history['val_loss']

    test_predictions = model.predict(X_test)
    predicted_labels = np.argmax(test_predictions, axis=1)
    accuracy = np.mean(predicted_labels == Y_test)

    return training_accuracy, training_loss, validation_accuracy, validation_loss, accuracy
In [65]:
enhanced_model_output=get_outputs(combinations,X,y,enhanced_vgg_16_modelling, df)
Epoch 1/5
45/45 [==============================] - 7s 126ms/step - loss: 1.4423 - accuracy: 0.5292 - val_loss: 1.0219 - val_accuracy: 0.6944
Epoch 2/5
45/45 [==============================] - 4s 99ms/step - loss: 0.8401 - accuracy: 0.7778 - val_loss: 0.7325 - val_accuracy: 0.8167
Epoch 3/5
45/45 [==============================] - 6s 124ms/step - loss: 0.7139 - accuracy: 0.8167 - val_loss: 0.6577 - val_accuracy: 0.8333
Epoch 4/5
45/45 [==============================] - 4s 99ms/step - loss: 0.6180 - accuracy: 0.8431 - val_loss: 0.6075 - val_accuracy: 0.8333
Epoch 5/5
45/45 [==============================] - 5s 106ms/step - loss: 0.5582 - accuracy: 0.8514 - val_loss: 0.5604 - val_accuracy: 0.8722
8/8 [==============================] - 1s 62ms/step
Epoch 1/5
23/23 [==============================] - 8s 274ms/step - loss: 1.5723 - accuracy: 0.5069 - val_loss: 1.1416 - val_accuracy: 0.7333
Epoch 2/5
23/23 [==============================] - 5s 233ms/step - loss: 1.0055 - accuracy: 0.7528 - val_loss: 0.8652 - val_accuracy: 0.7778
Epoch 3/5
23/23 [==============================] - 4s 182ms/step - loss: 0.8177 - accuracy: 0.7806 - val_loss: 0.7376 - val_accuracy: 0.8056
Epoch 4/5
23/23 [==============================] - 5s 220ms/step - loss: 0.6874 - accuracy: 0.8319 - val_loss: 0.6767 - val_accuracy: 0.8444
Epoch 5/5
23/23 [==============================] - 5s 203ms/step - loss: 0.6612 - accuracy: 0.8264 - val_loss: 0.6340 - val_accuracy: 0.8222
8/8 [==============================] - 1s 61ms/step
Epoch 1/5
12/12 [==============================] - 7s 406ms/step - loss: 1.7766 - accuracy: 0.3750 - val_loss: 1.3443 - val_accuracy: 0.6833
Epoch 2/5
12/12 [==============================] - 5s 375ms/step - loss: 1.2563 - accuracy: 0.6639 - val_loss: 1.0535 - val_accuracy: 0.7333
Epoch 3/5
12/12 [==============================] - 5s 435ms/step - loss: 1.0087 - accuracy: 0.7486 - val_loss: 0.9398 - val_accuracy: 0.7611
Epoch 4/5
12/12 [==============================] - 4s 348ms/step - loss: 0.8493 - accuracy: 0.7903 - val_loss: 0.8019 - val_accuracy: 0.7667
Epoch 5/5
12/12 [==============================] - 4s 351ms/step - loss: 0.7459 - accuracy: 0.8250 - val_loss: 0.7304 - val_accuracy: 0.8167
8/8 [==============================] - 1s 62ms/step
Epoch 1/5
6/6 [==============================] - 6s 707ms/step - loss: 1.7677 - accuracy: 0.4306 - val_loss: 1.4537 - val_accuracy: 0.7222
Epoch 2/5
6/6 [==============================] - 5s 828ms/step - loss: 1.4377 - accuracy: 0.5708 - val_loss: 1.2555 - val_accuracy: 0.7222
Epoch 3/5
6/6 [==============================] - 5s 827ms/step - loss: 1.2179 - accuracy: 0.6889 - val_loss: 1.0732 - val_accuracy: 0.7500
Epoch 4/5
6/6 [==============================] - 5s 752ms/step - loss: 1.0602 - accuracy: 0.7486 - val_loss: 0.9525 - val_accuracy: 0.7722
Epoch 5/5
6/6 [==============================] - 5s 877ms/step - loss: 0.9383 - accuracy: 0.7528 - val_loss: 0.8658 - val_accuracy: 0.7889
8/8 [==============================] - 1s 62ms/step
Epoch 1/10
45/45 [==============================] - 6s 106ms/step - loss: 1.3687 - accuracy: 0.5458 - val_loss: 0.9319 - val_accuracy: 0.7500
Epoch 2/10
45/45 [==============================] - 5s 103ms/step - loss: 0.8634 - accuracy: 0.7639 - val_loss: 0.7619 - val_accuracy: 0.7889
Epoch 3/10
45/45 [==============================] - 5s 103ms/step - loss: 0.6836 - accuracy: 0.8333 - val_loss: 0.6579 - val_accuracy: 0.8333
Epoch 4/10
45/45 [==============================] - 5s 114ms/step - loss: 0.6126 - accuracy: 0.8472 - val_loss: 0.5948 - val_accuracy: 0.8389
Epoch 5/10
45/45 [==============================] - 6s 131ms/step - loss: 0.5482 - accuracy: 0.8667 - val_loss: 0.5635 - val_accuracy: 0.8278
Epoch 6/10
45/45 [==============================] - 5s 107ms/step - loss: 0.5660 - accuracy: 0.8417 - val_loss: 0.5192 - val_accuracy: 0.8389
Epoch 7/10
45/45 [==============================] - 5s 107ms/step - loss: 0.4965 - accuracy: 0.8792 - val_loss: 0.4790 - val_accuracy: 0.8722
Epoch 8/10
45/45 [==============================] - 4s 99ms/step - loss: 0.4589 - accuracy: 0.8889 - val_loss: 0.5504 - val_accuracy: 0.8722
Epoch 9/10
45/45 [==============================] - 6s 129ms/step - loss: 0.4612 - accuracy: 0.8875 - val_loss: 0.5352 - val_accuracy: 0.8500
Epoch 10/10
45/45 [==============================] - 5s 105ms/step - loss: 0.4624 - accuracy: 0.8917 - val_loss: 0.4244 - val_accuracy: 0.8944
8/8 [==============================] - 1s 63ms/step
Epoch 1/10
23/23 [==============================] - 7s 250ms/step - loss: 1.5571 - accuracy: 0.4958 - val_loss: 1.1356 - val_accuracy: 0.7278
Epoch 2/10
23/23 [==============================] - 5s 195ms/step - loss: 1.0057 - accuracy: 0.7542 - val_loss: 0.8573 - val_accuracy: 0.7667
Epoch 3/10
23/23 [==============================] - 5s 196ms/step - loss: 0.7789 - accuracy: 0.7958 - val_loss: 0.7211 - val_accuracy: 0.8056
Epoch 4/10
23/23 [==============================] - 5s 198ms/step - loss: 0.6907 - accuracy: 0.8139 - val_loss: 0.6574 - val_accuracy: 0.8222
Epoch 5/10
23/23 [==============================] - 5s 197ms/step - loss: 0.6132 - accuracy: 0.8542 - val_loss: 0.6019 - val_accuracy: 0.8111
Epoch 6/10
23/23 [==============================] - 6s 245ms/step - loss: 0.5631 - accuracy: 0.8667 - val_loss: 0.5720 - val_accuracy: 0.8833
Epoch 7/10
23/23 [==============================] - 4s 184ms/step - loss: 0.5488 - accuracy: 0.8500 - val_loss: 0.5338 - val_accuracy: 0.8889
Epoch 8/10
23/23 [==============================] - 5s 197ms/step - loss: 0.5223 - accuracy: 0.8597 - val_loss: 0.5129 - val_accuracy: 0.8444
Epoch 9/10
23/23 [==============================] - 5s 230ms/step - loss: 0.4888 - accuracy: 0.8667 - val_loss: 0.4908 - val_accuracy: 0.8389
Epoch 10/10
23/23 [==============================] - 4s 183ms/step - loss: 0.4531 - accuracy: 0.8958 - val_loss: 0.4640 - val_accuracy: 0.9111
8/8 [==============================] - 1s 61ms/step
Epoch 1/10
12/12 [==============================] - 8s 490ms/step - loss: 1.7174 - accuracy: 0.4194 - val_loss: 1.3180 - val_accuracy: 0.6944
Epoch 2/10
12/12 [==============================] - 4s 345ms/step - loss: 1.2307 - accuracy: 0.6917 - val_loss: 1.0439 - val_accuracy: 0.7389
Epoch 3/10
12/12 [==============================] - 6s 473ms/step - loss: 0.9971 - accuracy: 0.7486 - val_loss: 0.8871 - val_accuracy: 0.7556
Epoch 4/10
12/12 [==============================] - 4s 345ms/step - loss: 0.8390 - accuracy: 0.7806 - val_loss: 0.7748 - val_accuracy: 0.8000
Epoch 5/10
12/12 [==============================] - 4s 343ms/step - loss: 0.7378 - accuracy: 0.8097 - val_loss: 0.7110 - val_accuracy: 0.8278
Epoch 6/10
12/12 [==============================] - 5s 395ms/step - loss: 0.6727 - accuracy: 0.8361 - val_loss: 0.6694 - val_accuracy: 0.8222
Epoch 7/10
12/12 [==============================] - 4s 342ms/step - loss: 0.6284 - accuracy: 0.8375 - val_loss: 0.6271 - val_accuracy: 0.8222
Epoch 8/10
12/12 [==============================] - 5s 444ms/step - loss: 0.5962 - accuracy: 0.8583 - val_loss: 0.6108 - val_accuracy: 0.8667
Epoch 9/10
12/12 [==============================] - 4s 395ms/step - loss: 0.5601 - accuracy: 0.8750 - val_loss: 0.5697 - val_accuracy: 0.8333
Epoch 10/10
12/12 [==============================] - 6s 452ms/step - loss: 0.5548 - accuracy: 0.8681 - val_loss: 0.5544 - val_accuracy: 0.8667
8/8 [==============================] - 1s 63ms/step
Epoch 1/10
6/6 [==============================] - 6s 784ms/step - loss: 1.8090 - accuracy: 0.3583 - val_loss: 1.5128 - val_accuracy: 0.6722
Epoch 2/10
6/6 [==============================] - 5s 775ms/step - loss: 1.4508 - accuracy: 0.6083 - val_loss: 1.2431 - val_accuracy: 0.7222
Epoch 3/10
6/6 [==============================] - 6s 951ms/step - loss: 1.1953 - accuracy: 0.7194 - val_loss: 1.0985 - val_accuracy: 0.7556
Epoch 4/10
6/6 [==============================] - 4s 717ms/step - loss: 1.0574 - accuracy: 0.7375 - val_loss: 0.9970 - val_accuracy: 0.7444
Epoch 5/10
6/6 [==============================] - 5s 871ms/step - loss: 0.9504 - accuracy: 0.7667 - val_loss: 0.8799 - val_accuracy: 0.7833
Epoch 6/10
6/6 [==============================] - 5s 746ms/step - loss: 0.8426 - accuracy: 0.7958 - val_loss: 0.8397 - val_accuracy: 0.8000
Epoch 7/10
6/6 [==============================] - 4s 731ms/step - loss: 0.7667 - accuracy: 0.8056 - val_loss: 0.7610 - val_accuracy: 0.8222
Epoch 8/10
6/6 [==============================] - 6s 971ms/step - loss: 0.7165 - accuracy: 0.8333 - val_loss: 0.7210 - val_accuracy: 0.8278
Epoch 9/10
6/6 [==============================] - 4s 704ms/step - loss: 0.6504 - accuracy: 0.8500 - val_loss: 0.6802 - val_accuracy: 0.8278
Epoch 10/10
6/6 [==============================] - 4s 718ms/step - loss: 0.6150 - accuracy: 0.8708 - val_loss: 0.6589 - val_accuracy: 0.8333
8/8 [==============================] - 1s 63ms/step
Epoch 1/20
45/45 [==============================] - 6s 111ms/step - loss: 1.3441 - accuracy: 0.5778 - val_loss: 0.9094 - val_accuracy: 0.7500
Epoch 2/20
45/45 [==============================] - 5s 109ms/step - loss: 0.8393 - accuracy: 0.7861 - val_loss: 0.7570 - val_accuracy: 0.7778
Epoch 3/20
45/45 [==============================] - 5s 114ms/step - loss: 0.6740 - accuracy: 0.8319 - val_loss: 0.6655 - val_accuracy: 0.8333
Epoch 4/20
45/45 [==============================] - 5s 104ms/step - loss: 0.6221 - accuracy: 0.8333 - val_loss: 0.5990 - val_accuracy: 0.8389
Epoch 5/20
45/45 [==============================] - 6s 131ms/step - loss: 0.5497 - accuracy: 0.8611 - val_loss: 0.5204 - val_accuracy: 0.8556
Epoch 6/20
45/45 [==============================] - 5s 101ms/step - loss: 0.5195 - accuracy: 0.8667 - val_loss: 0.5118 - val_accuracy: 0.9000
Epoch 7/20
45/45 [==============================] - 5s 118ms/step - loss: 0.4740 - accuracy: 0.8847 - val_loss: 0.4913 - val_accuracy: 0.8778
Epoch 8/20
45/45 [==============================] - 6s 124ms/step - loss: 0.4624 - accuracy: 0.8986 - val_loss: 0.5076 - val_accuracy: 0.8889
Epoch 9/20
45/45 [==============================] - 5s 105ms/step - loss: 0.4394 - accuracy: 0.9014 - val_loss: 0.4470 - val_accuracy: 0.9056
Epoch 10/20
45/45 [==============================] - 6s 126ms/step - loss: 0.3999 - accuracy: 0.9056 - val_loss: 0.4563 - val_accuracy: 0.9167
Epoch 11/20
45/45 [==============================] - 5s 104ms/step - loss: 0.4170 - accuracy: 0.9000 - val_loss: 0.4174 - val_accuracy: 0.9111
Epoch 12/20
45/45 [==============================] - 6s 127ms/step - loss: 0.4203 - accuracy: 0.8944 - val_loss: 0.3995 - val_accuracy: 0.9278
Epoch 13/20
45/45 [==============================] - 4s 99ms/step - loss: 0.3960 - accuracy: 0.9028 - val_loss: 0.4450 - val_accuracy: 0.9111
Epoch 14/20
45/45 [==============================] - 5s 103ms/step - loss: 0.3819 - accuracy: 0.9056 - val_loss: 0.4697 - val_accuracy: 0.8889
Epoch 15/20
45/45 [==============================] - 6s 130ms/step - loss: 0.3930 - accuracy: 0.9028 - val_loss: 0.3664 - val_accuracy: 0.9222
Epoch 16/20
45/45 [==============================] - 5s 104ms/step - loss: 0.4065 - accuracy: 0.8944 - val_loss: 0.4271 - val_accuracy: 0.9000
Epoch 17/20
45/45 [==============================] - 6s 145ms/step - loss: 0.4021 - accuracy: 0.8972 - val_loss: 0.3695 - val_accuracy: 0.9222
Epoch 18/20
45/45 [==============================] - 5s 103ms/step - loss: 0.3808 - accuracy: 0.9083 - val_loss: 0.3900 - val_accuracy: 0.9111
8/8 [==============================] - 1s 62ms/step
Epoch 1/20
23/23 [==============================] - 7s 211ms/step - loss: 1.5536 - accuracy: 0.5056 - val_loss: 1.0878 - val_accuracy: 0.7056
Epoch 2/20
23/23 [==============================] - 5s 199ms/step - loss: 0.9795 - accuracy: 0.7486 - val_loss: 0.8440 - val_accuracy: 0.7500
Epoch 3/20
23/23 [==============================] - 6s 247ms/step - loss: 0.7777 - accuracy: 0.8028 - val_loss: 0.7578 - val_accuracy: 0.7889
Epoch 4/20
23/23 [==============================] - 5s 197ms/step - loss: 0.6972 - accuracy: 0.8208 - val_loss: 0.6748 - val_accuracy: 0.8111
Epoch 5/20
23/23 [==============================] - 5s 203ms/step - loss: 0.6451 - accuracy: 0.8333 - val_loss: 0.6256 - val_accuracy: 0.8222
Epoch 6/20
23/23 [==============================] - 5s 195ms/step - loss: 0.5677 - accuracy: 0.8500 - val_loss: 0.6469 - val_accuracy: 0.7944
Epoch 7/20
23/23 [==============================] - 5s 197ms/step - loss: 0.5499 - accuracy: 0.8556 - val_loss: 0.5565 - val_accuracy: 0.8889
Epoch 8/20
23/23 [==============================] - 5s 236ms/step - loss: 0.5146 - accuracy: 0.8583 - val_loss: 0.5045 - val_accuracy: 0.8667
Epoch 9/20
23/23 [==============================] - 4s 183ms/step - loss: 0.4889 - accuracy: 0.8806 - val_loss: 0.5078 - val_accuracy: 0.9000
Epoch 10/20
23/23 [==============================] - 5s 205ms/step - loss: 0.4868 - accuracy: 0.8722 - val_loss: 0.4729 - val_accuracy: 0.8556
Epoch 11/20
23/23 [==============================] - 5s 204ms/step - loss: 0.4566 - accuracy: 0.8903 - val_loss: 0.4571 - val_accuracy: 0.8722
Epoch 12/20
23/23 [==============================] - 4s 198ms/step - loss: 0.4201 - accuracy: 0.9000 - val_loss: 0.4891 - val_accuracy: 0.8944
Epoch 13/20
23/23 [==============================] - 5s 237ms/step - loss: 0.4411 - accuracy: 0.8972 - val_loss: 0.4351 - val_accuracy: 0.9111
Epoch 14/20
23/23 [==============================] - 5s 199ms/step - loss: 0.4384 - accuracy: 0.8847 - val_loss: 0.4336 - val_accuracy: 0.9056
Epoch 15/20
23/23 [==============================] - 5s 213ms/step - loss: 0.4248 - accuracy: 0.8958 - val_loss: 0.4222 - val_accuracy: 0.9111
Epoch 16/20
23/23 [==============================] - 5s 212ms/step - loss: 0.3947 - accuracy: 0.9056 - val_loss: 0.4231 - val_accuracy: 0.8944
Epoch 17/20
23/23 [==============================] - 5s 195ms/step - loss: 0.3878 - accuracy: 0.9028 - val_loss: 0.4048 - val_accuracy: 0.9056
Epoch 18/20
23/23 [==============================] - 6s 245ms/step - loss: 0.3744 - accuracy: 0.9083 - val_loss: 0.4239 - val_accuracy: 0.9000
Epoch 19/20
23/23 [==============================] - 4s 183ms/step - loss: 0.3701 - accuracy: 0.9069 - val_loss: 0.4356 - val_accuracy: 0.9056
Epoch 20/20
23/23 [==============================] - 6s 248ms/step - loss: 0.3466 - accuracy: 0.9153 - val_loss: 0.4184 - val_accuracy: 0.9111
8/8 [==============================] - 1s 62ms/step
Epoch 1/20
12/12 [==============================] - 7s 399ms/step - loss: 1.6945 - accuracy: 0.4583 - val_loss: 1.2946 - val_accuracy: 0.7167
Epoch 2/20
12/12 [==============================] - 4s 346ms/step - loss: 1.1997 - accuracy: 0.7125 - val_loss: 1.0362 - val_accuracy: 0.7833
Epoch 3/20
12/12 [==============================] - 5s 448ms/step - loss: 0.9631 - accuracy: 0.7569 - val_loss: 0.8755 - val_accuracy: 0.7889
Epoch 4/20
12/12 [==============================] - 4s 354ms/step - loss: 0.8480 - accuracy: 0.7847 - val_loss: 0.7903 - val_accuracy: 0.7833
Epoch 5/20
12/12 [==============================] - 4s 371ms/step - loss: 0.7519 - accuracy: 0.8222 - val_loss: 0.7076 - val_accuracy: 0.8278
Epoch 6/20
12/12 [==============================] - 5s 460ms/step - loss: 0.6758 - accuracy: 0.8278 - val_loss: 0.6579 - val_accuracy: 0.8167
Epoch 7/20
12/12 [==============================] - 5s 377ms/step - loss: 0.6455 - accuracy: 0.8347 - val_loss: 0.6332 - val_accuracy: 0.8167
Epoch 8/20
12/12 [==============================] - 5s 384ms/step - loss: 0.5652 - accuracy: 0.8764 - val_loss: 0.6125 - val_accuracy: 0.8278
Epoch 9/20
12/12 [==============================] - 5s 408ms/step - loss: 0.5531 - accuracy: 0.8681 - val_loss: 0.5847 - val_accuracy: 0.8611
Epoch 10/20
12/12 [==============================] - 5s 378ms/step - loss: 0.5297 - accuracy: 0.8847 - val_loss: 0.5471 - val_accuracy: 0.8444
Epoch 11/20
12/12 [==============================] - 5s 444ms/step - loss: 0.4896 - accuracy: 0.8944 - val_loss: 0.5276 - val_accuracy: 0.8500
Epoch 12/20
12/12 [==============================] - 4s 378ms/step - loss: 0.4838 - accuracy: 0.8833 - val_loss: 0.5011 - val_accuracy: 0.8778
Epoch 13/20
12/12 [==============================] - 6s 473ms/step - loss: 0.4819 - accuracy: 0.8736 - val_loss: 0.5100 - val_accuracy: 0.8556
Epoch 14/20
12/12 [==============================] - 5s 376ms/step - loss: 0.4570 - accuracy: 0.8944 - val_loss: 0.4942 - val_accuracy: 0.8667
Epoch 15/20
12/12 [==============================] - 5s 428ms/step - loss: 0.4508 - accuracy: 0.8958 - val_loss: 0.4607 - val_accuracy: 0.8889
Epoch 16/20
12/12 [==============================] - 6s 466ms/step - loss: 0.4254 - accuracy: 0.9097 - val_loss: 0.5220 - val_accuracy: 0.8944
Epoch 17/20
12/12 [==============================] - 4s 352ms/step - loss: 0.4676 - accuracy: 0.8833 - val_loss: 0.4547 - val_accuracy: 0.9111
Epoch 18/20
12/12 [==============================] - 5s 459ms/step - loss: 0.4255 - accuracy: 0.9056 - val_loss: 0.4349 - val_accuracy: 0.8944
Epoch 19/20
12/12 [==============================] - 5s 403ms/step - loss: 0.4007 - accuracy: 0.8917 - val_loss: 0.4243 - val_accuracy: 0.9222
Epoch 20/20
12/12 [==============================] - 5s 392ms/step - loss: 0.3865 - accuracy: 0.9194 - val_loss: 0.4213 - val_accuracy: 0.9278
8/8 [==============================] - 1s 62ms/step
Epoch 1/20
6/6 [==============================] - 7s 986ms/step - loss: 1.7457 - accuracy: 0.4125 - val_loss: 1.4272 - val_accuracy: 0.6722
Epoch 2/20
6/6 [==============================] - 4s 702ms/step - loss: 1.4096 - accuracy: 0.6153 - val_loss: 1.2239 - val_accuracy: 0.7111
Epoch 3/20
6/6 [==============================] - 4s 693ms/step - loss: 1.1605 - accuracy: 0.7347 - val_loss: 1.0277 - val_accuracy: 0.7500
Epoch 4/20
6/6 [==============================] - 6s 1s/step - loss: 1.0131 - accuracy: 0.7583 - val_loss: 0.9466 - val_accuracy: 0.7667
Epoch 5/20
6/6 [==============================] - 5s 767ms/step - loss: 0.9061 - accuracy: 0.7806 - val_loss: 0.8452 - val_accuracy: 0.8000
Epoch 6/20
6/6 [==============================] - 5s 759ms/step - loss: 0.8189 - accuracy: 0.8111 - val_loss: 0.7871 - val_accuracy: 0.8167
Epoch 7/20
6/6 [==============================] - 5s 762ms/step - loss: 0.7379 - accuracy: 0.8375 - val_loss: 0.7228 - val_accuracy: 0.8222
Epoch 8/20
6/6 [==============================] - 5s 747ms/step - loss: 0.7007 - accuracy: 0.8236 - val_loss: 0.7027 - val_accuracy: 0.8278
Epoch 9/20
6/6 [==============================] - 6s 967ms/step - loss: 0.6563 - accuracy: 0.8611 - val_loss: 0.6513 - val_accuracy: 0.8333
Epoch 10/20
6/6 [==============================] - 4s 771ms/step - loss: 0.6285 - accuracy: 0.8653 - val_loss: 0.6267 - val_accuracy: 0.8444
Epoch 11/20
6/6 [==============================] - 4s 705ms/step - loss: 0.5992 - accuracy: 0.8528 - val_loss: 0.6041 - val_accuracy: 0.8667
Epoch 12/20
6/6 [==============================] - 5s 923ms/step - loss: 0.5600 - accuracy: 0.8792 - val_loss: 0.5826 - val_accuracy: 0.8667
Epoch 13/20
6/6 [==============================] - 4s 705ms/step - loss: 0.5435 - accuracy: 0.8833 - val_loss: 0.5578 - val_accuracy: 0.8833
Epoch 14/20
6/6 [==============================] - 5s 778ms/step - loss: 0.5267 - accuracy: 0.8736 - val_loss: 0.5480 - val_accuracy: 0.8722
Epoch 15/20
6/6 [==============================] - 5s 763ms/step - loss: 0.4979 - accuracy: 0.8819 - val_loss: 0.5273 - val_accuracy: 0.8889
Epoch 16/20
6/6 [==============================] - 5s 745ms/step - loss: 0.4927 - accuracy: 0.8861 - val_loss: 0.5243 - val_accuracy: 0.8722
Epoch 17/20
6/6 [==============================] - 6s 950ms/step - loss: 0.4763 - accuracy: 0.8958 - val_loss: 0.5082 - val_accuracy: 0.8833
Epoch 18/20
6/6 [==============================] - 5s 784ms/step - loss: 0.4703 - accuracy: 0.8986 - val_loss: 0.4927 - val_accuracy: 0.9000
Epoch 19/20
6/6 [==============================] - 5s 794ms/step - loss: 0.4585 - accuracy: 0.8972 - val_loss: 0.4915 - val_accuracy: 0.8889
Epoch 20/20
6/6 [==============================] - 5s 740ms/step - loss: 0.4362 - accuracy: 0.9097 - val_loss: 0.4684 - val_accuracy: 0.9111
8/8 [==============================] - 1s 61ms/step
Epoch 1/50
45/45 [==============================] - 7s 128ms/step - loss: 1.3826 - accuracy: 0.5806 - val_loss: 0.9677 - val_accuracy: 0.7389
Epoch 2/50
45/45 [==============================] - 4s 99ms/step - loss: 0.8441 - accuracy: 0.7958 - val_loss: 0.7106 - val_accuracy: 0.8056
Epoch 3/50
45/45 [==============================] - 5s 103ms/step - loss: 0.6860 - accuracy: 0.8319 - val_loss: 0.6585 - val_accuracy: 0.8222
Epoch 4/50
45/45 [==============================] - 5s 122ms/step - loss: 0.6171 - accuracy: 0.8278 - val_loss: 0.6155 - val_accuracy: 0.8111
Epoch 5/50
45/45 [==============================] - 4s 98ms/step - loss: 0.5640 - accuracy: 0.8542 - val_loss: 0.5684 - val_accuracy: 0.8333
Epoch 6/50
45/45 [==============================] - 5s 121ms/step - loss: 0.5093 - accuracy: 0.8597 - val_loss: 0.5072 - val_accuracy: 0.9056
Epoch 7/50
45/45 [==============================] - 5s 99ms/step - loss: 0.5306 - accuracy: 0.8500 - val_loss: 0.5412 - val_accuracy: 0.8833
Epoch 8/50
45/45 [==============================] - 5s 104ms/step - loss: 0.4844 - accuracy: 0.8750 - val_loss: 0.4614 - val_accuracy: 0.8944
Epoch 9/50
45/45 [==============================] - 6s 134ms/step - loss: 0.4515 - accuracy: 0.8931 - val_loss: 0.4365 - val_accuracy: 0.9000
Epoch 10/50
45/45 [==============================] - 4s 99ms/step - loss: 0.4265 - accuracy: 0.9028 - val_loss: 0.4227 - val_accuracy: 0.9111
Epoch 11/50
45/45 [==============================] - 5s 113ms/step - loss: 0.4287 - accuracy: 0.8931 - val_loss: 0.4242 - val_accuracy: 0.9111
Epoch 12/50
45/45 [==============================] - 5s 114ms/step - loss: 0.4125 - accuracy: 0.9042 - val_loss: 0.3974 - val_accuracy: 0.9167
Epoch 13/50
45/45 [==============================] - 5s 103ms/step - loss: 0.3524 - accuracy: 0.9208 - val_loss: 0.3871 - val_accuracy: 0.9167
Epoch 14/50
45/45 [==============================] - 6s 132ms/step - loss: 0.3522 - accuracy: 0.9222 - val_loss: 0.3935 - val_accuracy: 0.9000
Epoch 15/50
45/45 [==============================] - 5s 104ms/step - loss: 0.3698 - accuracy: 0.9125 - val_loss: 0.3873 - val_accuracy: 0.9222
Epoch 16/50
45/45 [==============================] - 5s 117ms/step - loss: 0.3819 - accuracy: 0.9014 - val_loss: 0.3807 - val_accuracy: 0.9222
Epoch 17/50
45/45 [==============================] - 6s 136ms/step - loss: 0.3554 - accuracy: 0.9194 - val_loss: 0.3694 - val_accuracy: 0.9389
Epoch 18/50
45/45 [==============================] - 5s 100ms/step - loss: 0.3552 - accuracy: 0.9069 - val_loss: 0.3669 - val_accuracy: 0.9222
Epoch 19/50
45/45 [==============================] - 5s 116ms/step - loss: 0.3823 - accuracy: 0.8958 - val_loss: 0.3654 - val_accuracy: 0.9222
Epoch 20/50
45/45 [==============================] - 5s 105ms/step - loss: 0.3372 - accuracy: 0.9125 - val_loss: 0.3639 - val_accuracy: 0.9278
Epoch 21/50
45/45 [==============================] - 5s 105ms/step - loss: 0.3191 - accuracy: 0.9417 - val_loss: 0.3645 - val_accuracy: 0.9111
Epoch 22/50
45/45 [==============================] - 6s 128ms/step - loss: 0.3607 - accuracy: 0.9111 - val_loss: 0.3364 - val_accuracy: 0.9222
Epoch 23/50
45/45 [==============================] - 5s 103ms/step - loss: 0.3481 - accuracy: 0.9097 - val_loss: 0.3648 - val_accuracy: 0.9278
Epoch 24/50
45/45 [==============================] - 4s 98ms/step - loss: 0.3420 - accuracy: 0.9139 - val_loss: 0.3475 - val_accuracy: 0.9222
Epoch 25/50
45/45 [==============================] - 5s 120ms/step - loss: 0.3591 - accuracy: 0.9028 - val_loss: 0.3547 - val_accuracy: 0.9222
8/8 [==============================] - 1s 62ms/step
Epoch 1/50
23/23 [==============================] - 6s 218ms/step - loss: 1.5406 - accuracy: 0.5153 - val_loss: 1.1184 - val_accuracy: 0.7167
Epoch 2/50
23/23 [==============================] - 4s 188ms/step - loss: 1.0243 - accuracy: 0.7222 - val_loss: 0.8418 - val_accuracy: 0.8000
Epoch 3/50
23/23 [==============================] - 5s 232ms/step - loss: 0.8004 - accuracy: 0.7972 - val_loss: 0.7266 - val_accuracy: 0.8222
Epoch 4/50
23/23 [==============================] - 5s 200ms/step - loss: 0.6975 - accuracy: 0.8347 - val_loss: 0.6376 - val_accuracy: 0.8167
Epoch 5/50
23/23 [==============================] - 4s 183ms/step - loss: 0.6146 - accuracy: 0.8472 - val_loss: 0.5969 - val_accuracy: 0.8722
Epoch 6/50
23/23 [==============================] - 6s 248ms/step - loss: 0.5859 - accuracy: 0.8569 - val_loss: 0.5884 - val_accuracy: 0.8556
Epoch 7/50
23/23 [==============================] - 5s 198ms/step - loss: 0.5495 - accuracy: 0.8681 - val_loss: 0.5793 - val_accuracy: 0.8667
Epoch 8/50
23/23 [==============================] - 5s 203ms/step - loss: 0.5120 - accuracy: 0.8722 - val_loss: 0.5177 - val_accuracy: 0.8833
Epoch 9/50
23/23 [==============================] - 5s 195ms/step - loss: 0.4787 - accuracy: 0.8708 - val_loss: 0.4906 - val_accuracy: 0.8667
Epoch 10/50
23/23 [==============================] - 5s 198ms/step - loss: 0.4738 - accuracy: 0.8833 - val_loss: 0.5042 - val_accuracy: 0.8667
Epoch 11/50
23/23 [==============================] - 5s 228ms/step - loss: 0.4312 - accuracy: 0.9069 - val_loss: 0.4659 - val_accuracy: 0.8944
Epoch 12/50
23/23 [==============================] - 5s 212ms/step - loss: 0.4433 - accuracy: 0.8986 - val_loss: 0.4468 - val_accuracy: 0.9111
Epoch 13/50
23/23 [==============================] - 5s 195ms/step - loss: 0.4236 - accuracy: 0.8903 - val_loss: 0.4812 - val_accuracy: 0.9111
Epoch 14/50
23/23 [==============================] - 4s 181ms/step - loss: 0.4140 - accuracy: 0.9000 - val_loss: 0.4475 - val_accuracy: 0.9056
Epoch 15/50
23/23 [==============================] - 5s 235ms/step - loss: 0.4032 - accuracy: 0.9125 - val_loss: 0.4618 - val_accuracy: 0.9111
8/8 [==============================] - 1s 62ms/step
Epoch 1/50
12/12 [==============================] - 6s 389ms/step - loss: 1.7819 - accuracy: 0.4153 - val_loss: 1.3319 - val_accuracy: 0.7222
Epoch 2/50
12/12 [==============================] - 6s 463ms/step - loss: 1.2250 - accuracy: 0.6722 - val_loss: 1.0461 - val_accuracy: 0.7611
Epoch 3/50
12/12 [==============================] - 5s 375ms/step - loss: 0.9918 - accuracy: 0.7736 - val_loss: 0.9367 - val_accuracy: 0.7389
Epoch 4/50
12/12 [==============================] - 5s 399ms/step - loss: 0.8552 - accuracy: 0.7931 - val_loss: 0.7828 - val_accuracy: 0.7833
Epoch 5/50
12/12 [==============================] - 4s 348ms/step - loss: 0.7513 - accuracy: 0.8306 - val_loss: 0.7377 - val_accuracy: 0.7944
Epoch 6/50
12/12 [==============================] - 5s 458ms/step - loss: 0.6824 - accuracy: 0.8292 - val_loss: 0.7020 - val_accuracy: 0.8056
Epoch 7/50
12/12 [==============================] - 5s 370ms/step - loss: 0.6519 - accuracy: 0.8403 - val_loss: 0.6569 - val_accuracy: 0.8000
Epoch 8/50
12/12 [==============================] - 6s 473ms/step - loss: 0.5811 - accuracy: 0.8778 - val_loss: 0.6056 - val_accuracy: 0.8389
Epoch 9/50
12/12 [==============================] - 4s 349ms/step - loss: 0.5695 - accuracy: 0.8569 - val_loss: 0.5780 - val_accuracy: 0.8444
Epoch 10/50
12/12 [==============================] - 5s 442ms/step - loss: 0.5670 - accuracy: 0.8500 - val_loss: 0.5559 - val_accuracy: 0.8444
Epoch 11/50
12/12 [==============================] - 5s 374ms/step - loss: 0.5224 - accuracy: 0.8764 - val_loss: 0.5770 - val_accuracy: 0.8611
Epoch 12/50
12/12 [==============================] - 4s 371ms/step - loss: 0.4829 - accuracy: 0.8972 - val_loss: 0.5147 - val_accuracy: 0.8611
Epoch 13/50
12/12 [==============================] - 5s 459ms/step - loss: 0.4895 - accuracy: 0.8792 - val_loss: 0.4925 - val_accuracy: 0.8778
Epoch 14/50
12/12 [==============================] - 6s 483ms/step - loss: 0.4630 - accuracy: 0.8861 - val_loss: 0.4823 - val_accuracy: 0.8778
Epoch 15/50
12/12 [==============================] - 4s 373ms/step - loss: 0.5011 - accuracy: 0.8764 - val_loss: 0.5022 - val_accuracy: 0.8389
Epoch 16/50
12/12 [==============================] - 4s 348ms/step - loss: 0.4412 - accuracy: 0.9111 - val_loss: 0.5011 - val_accuracy: 0.8833
Epoch 17/50
12/12 [==============================] - 5s 441ms/step - loss: 0.4336 - accuracy: 0.9014 - val_loss: 0.4634 - val_accuracy: 0.9111
Epoch 18/50
12/12 [==============================] - 4s 371ms/step - loss: 0.4262 - accuracy: 0.9000 - val_loss: 0.4674 - val_accuracy: 0.8889
Epoch 19/50
12/12 [==============================] - 5s 371ms/step - loss: 0.4075 - accuracy: 0.9056 - val_loss: 0.4387 - val_accuracy: 0.9000
Epoch 20/50
12/12 [==============================] - 4s 346ms/step - loss: 0.4241 - accuracy: 0.8944 - val_loss: 0.4439 - val_accuracy: 0.9167
Epoch 21/50
12/12 [==============================] - 5s 450ms/step - loss: 0.3900 - accuracy: 0.9111 - val_loss: 0.4221 - val_accuracy: 0.9111
Epoch 22/50
12/12 [==============================] - 4s 346ms/step - loss: 0.3923 - accuracy: 0.9000 - val_loss: 0.4192 - val_accuracy: 0.8944
Epoch 23/50
12/12 [==============================] - 5s 376ms/step - loss: 0.3867 - accuracy: 0.9056 - val_loss: 0.4104 - val_accuracy: 0.9056
Epoch 24/50
12/12 [==============================] - 6s 492ms/step - loss: 0.3811 - accuracy: 0.9028 - val_loss: 0.3976 - val_accuracy: 0.9167
Epoch 25/50
12/12 [==============================] - 4s 342ms/step - loss: 0.3782 - accuracy: 0.9167 - val_loss: 0.4167 - val_accuracy: 0.9222
Epoch 26/50
12/12 [==============================] - 5s 395ms/step - loss: 0.3632 - accuracy: 0.9125 - val_loss: 0.4242 - val_accuracy: 0.9056
Epoch 27/50
12/12 [==============================] - 5s 377ms/step - loss: 0.3910 - accuracy: 0.9139 - val_loss: 0.4108 - val_accuracy: 0.9278
8/8 [==============================] - 1s 62ms/step
Epoch 1/50
6/6 [==============================] - 6s 842ms/step - loss: 1.8592 - accuracy: 0.3583 - val_loss: 1.5377 - val_accuracy: 0.7056
Epoch 2/50
6/6 [==============================] - 5s 763ms/step - loss: 1.4889 - accuracy: 0.5375 - val_loss: 1.2519 - val_accuracy: 0.7222
Epoch 3/50
6/6 [==============================] - 4s 730ms/step - loss: 1.2420 - accuracy: 0.6639 - val_loss: 1.0997 - val_accuracy: 0.7333
Epoch 4/50
6/6 [==============================] - 6s 984ms/step - loss: 1.0912 - accuracy: 0.7472 - val_loss: 1.0083 - val_accuracy: 0.7722
Epoch 5/50
6/6 [==============================] - 4s 711ms/step - loss: 0.9697 - accuracy: 0.7625 - val_loss: 0.8893 - val_accuracy: 0.7722
Epoch 6/50
6/6 [==============================] - 4s 719ms/step - loss: 0.8765 - accuracy: 0.7722 - val_loss: 0.8680 - val_accuracy: 0.7889
Epoch 7/50
6/6 [==============================] - 6s 925ms/step - loss: 0.8093 - accuracy: 0.7931 - val_loss: 0.7724 - val_accuracy: 0.8000
Epoch 8/50
6/6 [==============================] - 5s 748ms/step - loss: 0.7355 - accuracy: 0.8375 - val_loss: 0.7415 - val_accuracy: 0.8111
Epoch 9/50
6/6 [==============================] - 5s 904ms/step - loss: 0.7033 - accuracy: 0.8375 - val_loss: 0.6856 - val_accuracy: 0.8389
Epoch 10/50
6/6 [==============================] - 4s 696ms/step - loss: 0.6379 - accuracy: 0.8611 - val_loss: 0.6623 - val_accuracy: 0.8444
Epoch 11/50
6/6 [==============================] - 5s 751ms/step - loss: 0.6299 - accuracy: 0.8597 - val_loss: 0.6300 - val_accuracy: 0.8500
Epoch 12/50
6/6 [==============================] - 6s 1s/step - loss: 0.6033 - accuracy: 0.8514 - val_loss: 0.6079 - val_accuracy: 0.8389
Epoch 13/50
6/6 [==============================] - 5s 774ms/step - loss: 0.5618 - accuracy: 0.8708 - val_loss: 0.5761 - val_accuracy: 0.8556
Epoch 14/50
6/6 [==============================] - 5s 771ms/step - loss: 0.5506 - accuracy: 0.8764 - val_loss: 0.5705 - val_accuracy: 0.8667
Epoch 15/50
6/6 [==============================] - 5s 757ms/step - loss: 0.5362 - accuracy: 0.8792 - val_loss: 0.5402 - val_accuracy: 0.8611
Epoch 16/50
6/6 [==============================] - 5s 780ms/step - loss: 0.5196 - accuracy: 0.8750 - val_loss: 0.5392 - val_accuracy: 0.8778
Epoch 17/50
6/6 [==============================] - 6s 960ms/step - loss: 0.4937 - accuracy: 0.8889 - val_loss: 0.5126 - val_accuracy: 0.8889
Epoch 18/50
6/6 [==============================] - 5s 798ms/step - loss: 0.5048 - accuracy: 0.8764 - val_loss: 0.5101 - val_accuracy: 0.8667
Epoch 19/50
6/6 [==============================] - 4s 777ms/step - loss: 0.4780 - accuracy: 0.8931 - val_loss: 0.5007 - val_accuracy: 0.9000
Epoch 20/50
6/6 [==============================] - 5s 826ms/step - loss: 0.4520 - accuracy: 0.9083 - val_loss: 0.4903 - val_accuracy: 0.8833
Epoch 21/50
6/6 [==============================] - 5s 859ms/step - loss: 0.4267 - accuracy: 0.9125 - val_loss: 0.4757 - val_accuracy: 0.9000
Epoch 22/50
6/6 [==============================] - 5s 775ms/step - loss: 0.4460 - accuracy: 0.8861 - val_loss: 0.4672 - val_accuracy: 0.9000
Epoch 23/50
6/6 [==============================] - 6s 921ms/step - loss: 0.4386 - accuracy: 0.8986 - val_loss: 0.4644 - val_accuracy: 0.8944
Epoch 24/50
6/6 [==============================] - 5s 843ms/step - loss: 0.4411 - accuracy: 0.8958 - val_loss: 0.4516 - val_accuracy: 0.9111
Epoch 25/50
6/6 [==============================] - 6s 992ms/step - loss: 0.4114 - accuracy: 0.9042 - val_loss: 0.4502 - val_accuracy: 0.9111
Epoch 26/50
6/6 [==============================] - 5s 763ms/step - loss: 0.4119 - accuracy: 0.9111 - val_loss: 0.4370 - val_accuracy: 0.9167
Epoch 27/50
6/6 [==============================] - 6s 886ms/step - loss: 0.4021 - accuracy: 0.8986 - val_loss: 0.4407 - val_accuracy: 0.9167
Epoch 28/50
6/6 [==============================] - 5s 784ms/step - loss: 0.3995 - accuracy: 0.9153 - val_loss: 0.4212 - val_accuracy: 0.9167
Epoch 29/50
6/6 [==============================] - 5s 729ms/step - loss: 0.3794 - accuracy: 0.9194 - val_loss: 0.4260 - val_accuracy: 0.9167
Epoch 30/50
6/6 [==============================] - 4s 721ms/step - loss: 0.4019 - accuracy: 0.9000 - val_loss: 0.4117 - val_accuracy: 0.9111
Epoch 31/50
6/6 [==============================] - 6s 938ms/step - loss: 0.3684 - accuracy: 0.9236 - val_loss: 0.4098 - val_accuracy: 0.9222
Epoch 32/50
6/6 [==============================] - 5s 762ms/step - loss: 0.3605 - accuracy: 0.9250 - val_loss: 0.4041 - val_accuracy: 0.9167
Epoch 33/50
6/6 [==============================] - 5s 816ms/step - loss: 0.3578 - accuracy: 0.9278 - val_loss: 0.3936 - val_accuracy: 0.9167
Epoch 34/50
6/6 [==============================] - 5s 903ms/step - loss: 0.3696 - accuracy: 0.9125 - val_loss: 0.3940 - val_accuracy: 0.9222
Epoch 35/50
6/6 [==============================] - 4s 711ms/step - loss: 0.3441 - accuracy: 0.9389 - val_loss: 0.3900 - val_accuracy: 0.9278
Epoch 36/50
6/6 [==============================] - 6s 1s/step - loss: 0.3838 - accuracy: 0.9042 - val_loss: 0.3792 - val_accuracy: 0.9278
Epoch 37/50
6/6 [==============================] - 4s 708ms/step - loss: 0.3477 - accuracy: 0.9208 - val_loss: 0.4082 - val_accuracy: 0.9222
Epoch 38/50
6/6 [==============================] - 4s 703ms/step - loss: 0.3408 - accuracy: 0.9319 - val_loss: 0.3745 - val_accuracy: 0.9278
Epoch 39/50
6/6 [==============================] - 5s 820ms/step - loss: 0.3237 - accuracy: 0.9361 - val_loss: 0.3914 - val_accuracy: 0.9333
Epoch 40/50
6/6 [==============================] - 5s 746ms/step - loss: 0.3470 - accuracy: 0.9278 - val_loss: 0.3699 - val_accuracy: 0.9333
Epoch 41/50
6/6 [==============================] - 5s 883ms/step - loss: 0.3392 - accuracy: 0.9250 - val_loss: 0.3782 - val_accuracy: 0.9333
Epoch 42/50
6/6 [==============================] - 4s 705ms/step - loss: 0.3214 - accuracy: 0.9347 - val_loss: 0.3610 - val_accuracy: 0.9389
Epoch 43/50
6/6 [==============================] - 5s 735ms/step - loss: 0.3232 - accuracy: 0.9347 - val_loss: 0.3643 - val_accuracy: 0.9333
Epoch 44/50
6/6 [==============================] - 6s 999ms/step - loss: 0.3188 - accuracy: 0.9375 - val_loss: 0.3640 - val_accuracy: 0.9278
Epoch 45/50
6/6 [==============================] - 4s 718ms/step - loss: 0.3400 - accuracy: 0.9194 - val_loss: 0.3537 - val_accuracy: 0.9444
Epoch 46/50
6/6 [==============================] - 5s 825ms/step - loss: 0.3202 - accuracy: 0.9333 - val_loss: 0.3696 - val_accuracy: 0.9278
Epoch 47/50
6/6 [==============================] - 5s 763ms/step - loss: 0.3211 - accuracy: 0.9375 - val_loss: 0.3513 - val_accuracy: 0.9389
Epoch 48/50
6/6 [==============================] - 5s 781ms/step - loss: 0.2995 - accuracy: 0.9333 - val_loss: 0.3632 - val_accuracy: 0.9333
Epoch 49/50
6/6 [==============================] - 5s 967ms/step - loss: 0.3105 - accuracy: 0.9292 - val_loss: 0.3513 - val_accuracy: 0.9333
Epoch 50/50
6/6 [==============================] - 4s 705ms/step - loss: 0.2845 - accuracy: 0.9458 - val_loss: 0.3518 - val_accuracy: 0.9333
8/8 [==============================] - 1s 62ms/step
In [72]:
enhanced_model_output
Out[72]:
Epochs Batch Size Training_accuracy Training_loss Validation_accuracy Validation_loss Accuracy
0 5.0 16.0 0.763611 0.834489 0.810000 0.716021 0.871111
1 5.0 32.0 0.739722 0.948827 0.796667 0.811043 0.862222
2 5.0 64.0 0.680556 1.127381 0.752222 0.973996 0.831111
3 5.0 128.0 0.638333 1.284378 0.751111 1.120132 0.831111
4 10.0 16.0 0.824583 0.652155 0.836667 0.601817 0.911111
5 10.0 32.0 0.805278 0.722179 0.830000 0.654685 0.911111
6 10.0 64.0 0.772500 0.853420 0.802778 0.776609 0.888889
7 10.0 128.0 0.734583 1.005421 0.778889 0.939212 0.862222
8 20.0 16.0 0.864043 0.529002 0.879938 0.508344 0.915556
9 20.0 32.0 0.851736 0.565784 0.859722 0.551068 0.911111
10 20.0 64.0 0.838889 0.644760 0.847778 0.624524 0.920000
11 20.0 128.0 0.817917 0.741925 0.833889 0.713309 0.906667
12 50.0 16.0 0.877556 0.478096 0.892444 0.459732 0.928889
13 50.0 32.0 0.838426 0.626169 0.860000 0.593647 0.911111
14 50.0 64.0 0.852932 0.590036 0.856790 0.582132 0.902222
15 50.0 128.0 0.871417 0.532475 0.883333 0.539265 0.937778
In [73]:
plot_loss(enhanced_model_output)
In [74]:
plot_accuracy(enhanced_model_output)
In [69]:
plot_test_accuracy(enhanced_model_output)

From the above, it is worthy to note that across all different combinations of Batch Size and Epoch, the test accuracy shows a steady increase along with training, and validation accuracy as epoch increases. The test accuracy in general is around 90% and the training and validation accuracy can in general reach around 85%, showing the model can continute learning in the training and validation set. This is a good sign that the model is performing well and the model is able to capture relationship that's complex enough to yield increasingly accurate predictions.

It is worthy to note that early stopping does play a role while formulating a proper model. From the log of training, it appears that early stopping intervenes at the combination of batch=16, epoch=20
batch=16, epoch=50
batch=32, epoch=50
batch=64, epoch=50
batch=128, epoch=50

This has indicated several interesting findings:

  1. With the boost of early stopping, the model is capable of running under different combinations of batch size and epoch, which is a really power technique to make the model to be generalizable enough in terms of different combinations of batch size and epoch.

  2. It appears that epoch=50 is too many iterations for this particular model to achieve the optimal outcomes, and from a detailed record of the training log, the optimal training epoch, in general, would be around 30 epochs for this particular model.

  3. This model is performing well to cature suffciently complex relationship while do not possess overfitting or underfitting problems. The next step would be to hyperparameter tuning for this given model structure in order to obtain an optimal model.

Hyperparameter Tuning¶

From the training log of the above modellings, which all outputs decent model prediction capabilities, we can fairly conclude that epochs of 30 is capable of producing sufficiently great prediction performance. It is very important to combine the results and insights obatined above while exploring for additional hyperparameters. Therefore, for the rest of the hyperparameter tuning, we can set epoch=30 directly.

In [50]:
from tensorflow.keras.applications import VGG16
from tensorflow.keras.layers import Dense, Dropout, GlobalAveragePooling2D
from tensorflow.keras.models import Model
from tensorflow.keras.preprocessing.image import ImageDataGenerator
from tensorflow.keras.regularizers import l2
from tensorflow.keras.callbacks import EarlyStopping
from sklearn.model_selection import train_test_split
import numpy as np

def enhanced_vgg_16_hyperparameter_tuning(X, y, df, epochs, batch_sizes):
    X_train, X_test, Y_train, Y_test = train_test_split(X, y, test_size=0.2, random_state=42)
    X_train, X_val, Y_train, Y_val = train_test_split(X_train, Y_train, test_size=0.2, random_state=42)

    num_labels = len(np.unique(df['label']))
    y_train = np.eye(num_labels)[Y_train]
    y_test = np.eye(num_labels)[Y_test]
    y_val = np.eye(num_labels)[Y_val]

    # Data augmentation
    train_datagen = ImageDataGenerator(
        rotation_range=20,
        width_shift_range=0.1,
        height_shift_range=0.1,
        shear_range=0.2,
        zoom_range=0.2,
        horizontal_flip=True,
        fill_mode='nearest'
    )
    train_datagen.fit(X_train)

    # Hyperparameters to explore
    dropout_rates = [0.3, 0.5, 0.7]
    l2_regularizations = [0.001, 0.01, 0.1]

    best_accuracy = 0.0
    best_params = {}
    best_batch_size = None

    results = {}  # Store results for each batch size

    for batch_size in batch_sizes:
        batch_size_results = []  # Store results for current batch size

        for dropout_rate in dropout_rates:
            for l2_regularization in l2_regularizations:
                # Initialize the base model
                base_model = VGG16(weights='imagenet', include_top=False, input_shape=(150, 150, 3))
                for layer in base_model.layers:
                    layer.trainable = False

                x = base_model.output
                x = GlobalAveragePooling2D()(x)
                x = Dense(512, activation='relu', kernel_regularizer=l2(l2_regularization))(x)
                x = Dropout(dropout_rate)(x)
                predictions = Dense(num_labels, activation='softmax')(x)
                model = Model(inputs=base_model.input, outputs=predictions)

                # Compile the model
                model.compile(optimizer='adam', loss='categorical_crossentropy', metrics=['accuracy'])

                # Early stopping
                early_stop = EarlyStopping(monitor='val_loss', patience=3, restore_best_weights=True)

                # Fit the model with augmented data
                history = model.fit(
                    train_datagen.flow(X_train, y_train, batch_size=batch_size),
                    epochs=epochs,
                    validation_data=(X_val, y_val),
                    callbacks=[early_stop]
                )

                test_predictions = model.predict(X_test)
                predicted_labels = np.argmax(test_predictions, axis=1)
                accuracy = np.mean(predicted_labels == Y_test)

                # Store the accuracy for current hyperparameters
                batch_size_results.append({'dropout_rate': dropout_rate,
                                           'l2_regularization': l2_regularization,
                                           'accuracy': accuracy})

                if accuracy > best_accuracy:
                    best_accuracy = accuracy
                    best_params = {'dropout_rate': dropout_rate, 'l2_regularization': l2_regularization}
                    best_batch_size = batch_size

        # Store the results for current batch size
        results[batch_size] = batch_size_results

    return best_params, best_accuracy, best_batch_size, results
In [55]:
batch_sizes_list=[16,32,64,128]
enhanced_vgg_16_hyperparameter_tuning(X, y, df, 30, batch_sizes=batch_sizes_list)
Downloading data from https://storage.googleapis.com/tensorflow/keras-applications/vgg16/vgg16_weights_tf_dim_ordering_tf_kernels_notop.h5
58889256/58889256 [==============================] - 3s 0us/step
Epoch 1/30
45/45 [==============================] - 7s 129ms/step - loss: 1.2632 - accuracy: 0.6597 - val_loss: 0.9088 - val_accuracy: 0.7611
Epoch 2/30
45/45 [==============================] - 4s 96ms/step - loss: 0.7805 - accuracy: 0.7972 - val_loss: 0.7288 - val_accuracy: 0.8056
Epoch 3/30
45/45 [==============================] - 4s 99ms/step - loss: 0.6329 - accuracy: 0.8361 - val_loss: 0.6432 - val_accuracy: 0.8222
Epoch 4/30
45/45 [==============================] - 5s 112ms/step - loss: 0.5314 - accuracy: 0.8750 - val_loss: 0.6406 - val_accuracy: 0.8000
Epoch 5/30
45/45 [==============================] - 5s 102ms/step - loss: 0.5105 - accuracy: 0.8861 - val_loss: 0.5422 - val_accuracy: 0.8556
Epoch 6/30
45/45 [==============================] - 5s 121ms/step - loss: 0.4451 - accuracy: 0.8917 - val_loss: 0.5240 - val_accuracy: 0.8556
Epoch 7/30
45/45 [==============================] - 5s 103ms/step - loss: 0.4397 - accuracy: 0.8958 - val_loss: 0.4966 - val_accuracy: 0.8556
Epoch 8/30
45/45 [==============================] - 6s 126ms/step - loss: 0.4424 - accuracy: 0.8917 - val_loss: 0.5005 - val_accuracy: 0.8778
Epoch 9/30
45/45 [==============================] - 5s 100ms/step - loss: 0.3993 - accuracy: 0.9181 - val_loss: 0.5113 - val_accuracy: 0.8722
Epoch 10/30
45/45 [==============================] - 5s 119ms/step - loss: 0.3665 - accuracy: 0.9097 - val_loss: 0.4747 - val_accuracy: 0.8611
Epoch 11/30
45/45 [==============================] - 5s 100ms/step - loss: 0.3740 - accuracy: 0.9236 - val_loss: 0.4858 - val_accuracy: 0.8944
Epoch 12/30
45/45 [==============================] - 5s 101ms/step - loss: 0.3663 - accuracy: 0.9153 - val_loss: 0.4532 - val_accuracy: 0.8722
Epoch 13/30
45/45 [==============================] - 6s 127ms/step - loss: 0.3741 - accuracy: 0.9056 - val_loss: 0.4670 - val_accuracy: 0.8833
Epoch 14/30
45/45 [==============================] - 4s 94ms/step - loss: 0.3217 - accuracy: 0.9375 - val_loss: 0.4551 - val_accuracy: 0.9000
Epoch 15/30
45/45 [==============================] - 5s 116ms/step - loss: 0.3284 - accuracy: 0.9306 - val_loss: 0.4891 - val_accuracy: 0.8667
8/8 [==============================] - 1s 63ms/step
Epoch 1/30
45/45 [==============================] - 6s 108ms/step - loss: 3.7257 - accuracy: 0.6347 - val_loss: 1.9653 - val_accuracy: 0.7556
Epoch 2/30
45/45 [==============================] - 5s 112ms/step - loss: 1.4389 - accuracy: 0.7639 - val_loss: 1.1069 - val_accuracy: 0.8056
Epoch 3/30
45/45 [==============================] - 5s 104ms/step - loss: 0.9370 - accuracy: 0.8278 - val_loss: 0.8935 - val_accuracy: 0.8278
Epoch 4/30
45/45 [==============================] - 4s 95ms/step - loss: 0.7976 - accuracy: 0.8375 - val_loss: 0.8451 - val_accuracy: 0.8167
Epoch 5/30
45/45 [==============================] - 6s 126ms/step - loss: 0.7174 - accuracy: 0.8417 - val_loss: 0.7734 - val_accuracy: 0.8278
Epoch 6/30
45/45 [==============================] - 5s 100ms/step - loss: 0.6393 - accuracy: 0.8833 - val_loss: 0.7478 - val_accuracy: 0.8056
Epoch 7/30
45/45 [==============================] - 5s 118ms/step - loss: 0.6338 - accuracy: 0.8611 - val_loss: 0.6467 - val_accuracy: 0.8444
Epoch 8/30
45/45 [==============================] - 5s 121ms/step - loss: 0.6001 - accuracy: 0.8833 - val_loss: 0.6368 - val_accuracy: 0.8556
Epoch 9/30
45/45 [==============================] - 4s 98ms/step - loss: 0.5635 - accuracy: 0.8722 - val_loss: 0.6457 - val_accuracy: 0.8444
Epoch 10/30
45/45 [==============================] - 4s 93ms/step - loss: 0.5631 - accuracy: 0.8667 - val_loss: 0.6530 - val_accuracy: 0.8167
Epoch 11/30
45/45 [==============================] - 7s 147ms/step - loss: 0.5442 - accuracy: 0.8736 - val_loss: 0.6342 - val_accuracy: 0.8444
Epoch 12/30
45/45 [==============================] - 5s 101ms/step - loss: 0.5647 - accuracy: 0.8556 - val_loss: 0.6016 - val_accuracy: 0.8167
Epoch 13/30
45/45 [==============================] - 5s 101ms/step - loss: 0.5517 - accuracy: 0.8694 - val_loss: 0.6555 - val_accuracy: 0.8222
Epoch 14/30
45/45 [==============================] - 5s 112ms/step - loss: 0.5425 - accuracy: 0.8667 - val_loss: 0.6319 - val_accuracy: 0.8500
Epoch 15/30
45/45 [==============================] - 4s 96ms/step - loss: 0.5086 - accuracy: 0.8819 - val_loss: 0.5894 - val_accuracy: 0.8444
Epoch 16/30
45/45 [==============================] - 5s 120ms/step - loss: 0.5005 - accuracy: 0.8861 - val_loss: 0.5648 - val_accuracy: 0.8667
Epoch 17/30
45/45 [==============================] - 5s 101ms/step - loss: 0.5113 - accuracy: 0.8986 - val_loss: 0.6075 - val_accuracy: 0.8556
Epoch 18/30
45/45 [==============================] - 4s 95ms/step - loss: 0.5089 - accuracy: 0.8708 - val_loss: 0.5481 - val_accuracy: 0.8500
Epoch 19/30
45/45 [==============================] - 5s 110ms/step - loss: 0.5327 - accuracy: 0.8681 - val_loss: 0.5409 - val_accuracy: 0.8778
Epoch 20/30
45/45 [==============================] - 4s 94ms/step - loss: 0.4835 - accuracy: 0.8917 - val_loss: 0.5257 - val_accuracy: 0.8722
Epoch 21/30
45/45 [==============================] - 5s 112ms/step - loss: 0.4702 - accuracy: 0.8861 - val_loss: 0.7074 - val_accuracy: 0.7889
Epoch 22/30
45/45 [==============================] - 5s 100ms/step - loss: 0.5720 - accuracy: 0.8458 - val_loss: 0.7161 - val_accuracy: 0.7889
Epoch 23/30
45/45 [==============================] - 5s 101ms/step - loss: 0.5074 - accuracy: 0.8681 - val_loss: 0.5319 - val_accuracy: 0.8778
8/8 [==============================] - 1s 63ms/step
Epoch 1/30
45/45 [==============================] - 7s 108ms/step - loss: 24.3543 - accuracy: 0.4931 - val_loss: 7.3770 - val_accuracy: 0.5278
Epoch 2/30
45/45 [==============================] - 5s 100ms/step - loss: 3.4041 - accuracy: 0.6958 - val_loss: 1.5448 - val_accuracy: 0.7111
Epoch 3/30
45/45 [==============================] - 5s 118ms/step - loss: 1.2512 - accuracy: 0.7139 - val_loss: 1.1040 - val_accuracy: 0.7222
Epoch 4/30
45/45 [==============================] - 5s 107ms/step - loss: 1.0329 - accuracy: 0.7542 - val_loss: 1.0660 - val_accuracy: 0.7500
Epoch 5/30
45/45 [==============================] - 5s 101ms/step - loss: 0.9786 - accuracy: 0.7722 - val_loss: 0.9828 - val_accuracy: 0.7722
Epoch 6/30
45/45 [==============================] - 4s 100ms/step - loss: 0.9433 - accuracy: 0.7694 - val_loss: 1.0103 - val_accuracy: 0.7278
Epoch 7/30
45/45 [==============================] - 5s 118ms/step - loss: 0.9305 - accuracy: 0.7667 - val_loss: 0.9103 - val_accuracy: 0.7611
Epoch 8/30
45/45 [==============================] - 4s 95ms/step - loss: 0.8865 - accuracy: 0.7958 - val_loss: 0.9438 - val_accuracy: 0.7444
Epoch 9/30
45/45 [==============================] - 5s 111ms/step - loss: 0.8525 - accuracy: 0.8014 - val_loss: 0.8798 - val_accuracy: 0.7722
Epoch 10/30
45/45 [==============================] - 4s 95ms/step - loss: 0.8430 - accuracy: 0.8056 - val_loss: 0.8635 - val_accuracy: 0.7778
Epoch 11/30
45/45 [==============================] - 6s 124ms/step - loss: 0.8886 - accuracy: 0.7653 - val_loss: 0.8746 - val_accuracy: 0.8111
Epoch 12/30
45/45 [==============================] - 4s 95ms/step - loss: 0.8784 - accuracy: 0.7625 - val_loss: 0.8522 - val_accuracy: 0.7500
Epoch 13/30
45/45 [==============================] - 5s 111ms/step - loss: 0.8517 - accuracy: 0.7903 - val_loss: 0.8141 - val_accuracy: 0.8111
Epoch 14/30
45/45 [==============================] - 4s 94ms/step - loss: 0.8023 - accuracy: 0.8125 - val_loss: 0.8763 - val_accuracy: 0.7611
Epoch 15/30
45/45 [==============================] - 5s 118ms/step - loss: 0.8270 - accuracy: 0.8042 - val_loss: 0.8239 - val_accuracy: 0.7611
Epoch 16/30
45/45 [==============================] - 4s 94ms/step - loss: 0.8179 - accuracy: 0.8083 - val_loss: 0.8232 - val_accuracy: 0.8056
8/8 [==============================] - 1s 62ms/step
Epoch 1/30
45/45 [==============================] - 7s 122ms/step - loss: 1.3970 - accuracy: 0.5472 - val_loss: 0.9825 - val_accuracy: 0.7778
Epoch 2/30
45/45 [==============================] - 5s 104ms/step - loss: 0.8387 - accuracy: 0.7875 - val_loss: 0.7864 - val_accuracy: 0.7944
Epoch 3/30
45/45 [==============================] - 6s 123ms/step - loss: 0.7057 - accuracy: 0.8153 - val_loss: 0.7014 - val_accuracy: 0.8000
Epoch 4/30
45/45 [==============================] - 5s 105ms/step - loss: 0.6162 - accuracy: 0.8472 - val_loss: 0.6582 - val_accuracy: 0.8111
Epoch 5/30
45/45 [==============================] - 5s 107ms/step - loss: 0.5665 - accuracy: 0.8625 - val_loss: 0.6183 - val_accuracy: 0.8389
Epoch 6/30
45/45 [==============================] - 5s 100ms/step - loss: 0.4857 - accuracy: 0.8903 - val_loss: 0.5706 - val_accuracy: 0.8389
Epoch 7/30
45/45 [==============================] - 5s 119ms/step - loss: 0.5007 - accuracy: 0.8597 - val_loss: 0.5316 - val_accuracy: 0.8611
Epoch 8/30
45/45 [==============================] - 5s 99ms/step - loss: 0.4478 - accuracy: 0.8903 - val_loss: 0.5412 - val_accuracy: 0.8556
Epoch 9/30
45/45 [==============================] - 5s 117ms/step - loss: 0.4403 - accuracy: 0.8847 - val_loss: 0.5027 - val_accuracy: 0.8611
Epoch 10/30
45/45 [==============================] - 6s 123ms/step - loss: 0.4196 - accuracy: 0.8931 - val_loss: 0.5199 - val_accuracy: 0.8722
Epoch 11/30
45/45 [==============================] - 5s 117ms/step - loss: 0.4187 - accuracy: 0.9000 - val_loss: 0.5002 - val_accuracy: 0.8556
Epoch 12/30
45/45 [==============================] - 5s 111ms/step - loss: 0.4046 - accuracy: 0.9000 - val_loss: 0.5023 - val_accuracy: 0.8667
Epoch 13/30
45/45 [==============================] - 5s 100ms/step - loss: 0.3805 - accuracy: 0.9153 - val_loss: 0.4579 - val_accuracy: 0.8889
Epoch 14/30
45/45 [==============================] - 5s 113ms/step - loss: 0.3704 - accuracy: 0.9167 - val_loss: 0.4509 - val_accuracy: 0.8889
Epoch 15/30
45/45 [==============================] - 5s 103ms/step - loss: 0.3643 - accuracy: 0.9181 - val_loss: 0.4482 - val_accuracy: 0.9000
Epoch 16/30
45/45 [==============================] - 5s 101ms/step - loss: 0.3548 - accuracy: 0.9306 - val_loss: 0.4544 - val_accuracy: 0.8833
Epoch 17/30
45/45 [==============================] - 6s 125ms/step - loss: 0.3846 - accuracy: 0.9042 - val_loss: 0.4675 - val_accuracy: 0.8833
Epoch 18/30
45/45 [==============================] - 5s 107ms/step - loss: 0.3603 - accuracy: 0.9167 - val_loss: 0.5113 - val_accuracy: 0.8333
8/8 [==============================] - 1s 63ms/step
Epoch 1/30
45/45 [==============================] - 6s 102ms/step - loss: 3.8556 - accuracy: 0.5806 - val_loss: 2.0943 - val_accuracy: 0.7500
Epoch 2/30
45/45 [==============================] - 4s 98ms/step - loss: 1.5508 - accuracy: 0.7569 - val_loss: 1.2496 - val_accuracy: 0.7444
Epoch 3/30
45/45 [==============================] - 5s 111ms/step - loss: 1.0574 - accuracy: 0.8069 - val_loss: 1.0478 - val_accuracy: 0.7667
Epoch 4/30
45/45 [==============================] - 4s 94ms/step - loss: 0.9208 - accuracy: 0.8014 - val_loss: 0.8562 - val_accuracy: 0.8111
Epoch 5/30
45/45 [==============================] - 5s 118ms/step - loss: 0.7858 - accuracy: 0.8333 - val_loss: 0.8379 - val_accuracy: 0.7944
Epoch 6/30
45/45 [==============================] - 4s 99ms/step - loss: 0.7361 - accuracy: 0.8389 - val_loss: 0.7614 - val_accuracy: 0.7944
Epoch 7/30
45/45 [==============================] - 5s 118ms/step - loss: 0.7561 - accuracy: 0.8250 - val_loss: 0.7546 - val_accuracy: 0.8278
Epoch 8/30
45/45 [==============================] - 5s 118ms/step - loss: 0.6711 - accuracy: 0.8514 - val_loss: 0.7063 - val_accuracy: 0.8167
Epoch 9/30
45/45 [==============================] - 5s 100ms/step - loss: 0.6489 - accuracy: 0.8514 - val_loss: 0.6987 - val_accuracy: 0.8111
Epoch 10/30
45/45 [==============================] - 6s 126ms/step - loss: 0.6407 - accuracy: 0.8444 - val_loss: 0.6317 - val_accuracy: 0.8556
Epoch 11/30
45/45 [==============================] - 4s 94ms/step - loss: 0.5966 - accuracy: 0.8792 - val_loss: 0.6223 - val_accuracy: 0.8722
Epoch 12/30
45/45 [==============================] - 5s 104ms/step - loss: 0.5812 - accuracy: 0.8681 - val_loss: 0.6431 - val_accuracy: 0.8500
Epoch 13/30
45/45 [==============================] - 5s 104ms/step - loss: 0.5934 - accuracy: 0.8694 - val_loss: 0.6258 - val_accuracy: 0.8611
Epoch 14/30
45/45 [==============================] - 4s 94ms/step - loss: 0.5574 - accuracy: 0.8819 - val_loss: 0.5902 - val_accuracy: 0.8722
Epoch 15/30
45/45 [==============================] - 6s 128ms/step - loss: 0.5777 - accuracy: 0.8597 - val_loss: 0.5790 - val_accuracy: 0.8722
Epoch 16/30
45/45 [==============================] - 4s 99ms/step - loss: 0.5890 - accuracy: 0.8694 - val_loss: 0.6188 - val_accuracy: 0.8222
Epoch 17/30
45/45 [==============================] - 5s 102ms/step - loss: 0.5814 - accuracy: 0.8653 - val_loss: 0.6241 - val_accuracy: 0.8556
Epoch 18/30
45/45 [==============================] - 5s 103ms/step - loss: 0.5594 - accuracy: 0.8653 - val_loss: 0.5847 - val_accuracy: 0.8667
8/8 [==============================] - 1s 62ms/step
Epoch 1/30
45/45 [==============================] - 21s 443ms/step - loss: 24.4867 - accuracy: 0.4472 - val_loss: 7.4807 - val_accuracy: 0.6333
Epoch 2/30
45/45 [==============================] - 5s 103ms/step - loss: 3.5534 - accuracy: 0.6472 - val_loss: 1.7081 - val_accuracy: 0.6389
Epoch 3/30
45/45 [==============================] - 5s 118ms/step - loss: 1.3350 - accuracy: 0.7111 - val_loss: 1.1494 - val_accuracy: 0.7778
Epoch 4/30
45/45 [==============================] - 5s 102ms/step - loss: 1.0883 - accuracy: 0.7458 - val_loss: 1.1125 - val_accuracy: 0.7111
Epoch 5/30
45/45 [==============================] - 6s 126ms/step - loss: 1.0251 - accuracy: 0.7375 - val_loss: 1.0341 - val_accuracy: 0.7222
Epoch 6/30
45/45 [==============================] - 5s 103ms/step - loss: 0.9887 - accuracy: 0.7597 - val_loss: 1.0283 - val_accuracy: 0.6722
Epoch 7/30
45/45 [==============================] - 5s 107ms/step - loss: 0.9709 - accuracy: 0.7431 - val_loss: 1.0507 - val_accuracy: 0.6778
Epoch 8/30
45/45 [==============================] - 5s 100ms/step - loss: 1.0120 - accuracy: 0.7194 - val_loss: 0.9595 - val_accuracy: 0.7667
Epoch 9/30
45/45 [==============================] - 6s 126ms/step - loss: 0.9485 - accuracy: 0.7597 - val_loss: 0.9542 - val_accuracy: 0.7444
Epoch 10/30
45/45 [==============================] - 4s 95ms/step - loss: 0.9250 - accuracy: 0.7778 - val_loss: 0.9253 - val_accuracy: 0.7333
Epoch 11/30
45/45 [==============================] - 5s 102ms/step - loss: 0.9242 - accuracy: 0.7625 - val_loss: 0.9238 - val_accuracy: 0.7389
Epoch 12/30
45/45 [==============================] - 5s 108ms/step - loss: 0.9251 - accuracy: 0.7778 - val_loss: 0.8929 - val_accuracy: 0.7611
Epoch 13/30
45/45 [==============================] - 5s 101ms/step - loss: 0.9567 - accuracy: 0.7389 - val_loss: 0.9549 - val_accuracy: 0.7944
Epoch 14/30
45/45 [==============================] - 6s 143ms/step - loss: 0.9028 - accuracy: 0.7597 - val_loss: 0.9432 - val_accuracy: 0.7111
Epoch 15/30
45/45 [==============================] - 4s 96ms/step - loss: 0.8658 - accuracy: 0.7819 - val_loss: 0.9525 - val_accuracy: 0.7444
8/8 [==============================] - 1s 63ms/step
Epoch 1/30
45/45 [==============================] - 7s 135ms/step - loss: 1.6270 - accuracy: 0.4722 - val_loss: 1.0983 - val_accuracy: 0.7167
Epoch 2/30
45/45 [==============================] - 5s 105ms/step - loss: 0.9879 - accuracy: 0.7042 - val_loss: 0.8803 - val_accuracy: 0.7389
Epoch 3/30
45/45 [==============================] - 5s 115ms/step - loss: 0.8344 - accuracy: 0.7833 - val_loss: 0.7748 - val_accuracy: 0.7833
Epoch 4/30
45/45 [==============================] - 5s 102ms/step - loss: 0.7293 - accuracy: 0.7917 - val_loss: 0.6963 - val_accuracy: 0.8111
Epoch 5/30
45/45 [==============================] - 5s 111ms/step - loss: 0.6660 - accuracy: 0.8333 - val_loss: 0.6337 - val_accuracy: 0.8333
Epoch 6/30
45/45 [==============================] - 5s 100ms/step - loss: 0.6100 - accuracy: 0.8278 - val_loss: 0.6298 - val_accuracy: 0.8278
Epoch 7/30
45/45 [==============================] - 4s 94ms/step - loss: 0.5790 - accuracy: 0.8431 - val_loss: 0.5844 - val_accuracy: 0.8444
Epoch 8/30
45/45 [==============================] - 5s 119ms/step - loss: 0.5263 - accuracy: 0.8597 - val_loss: 0.5835 - val_accuracy: 0.8333
Epoch 9/30
45/45 [==============================] - 5s 102ms/step - loss: 0.5228 - accuracy: 0.8639 - val_loss: 0.5523 - val_accuracy: 0.8389
Epoch 10/30
45/45 [==============================] - 4s 95ms/step - loss: 0.5191 - accuracy: 0.8569 - val_loss: 0.5774 - val_accuracy: 0.8389
Epoch 11/30
45/45 [==============================] - 5s 111ms/step - loss: 0.5060 - accuracy: 0.8611 - val_loss: 0.5721 - val_accuracy: 0.8556
Epoch 12/30
45/45 [==============================] - 4s 96ms/step - loss: 0.4740 - accuracy: 0.8778 - val_loss: 0.5216 - val_accuracy: 0.8611
Epoch 13/30
45/45 [==============================] - 6s 123ms/step - loss: 0.4527 - accuracy: 0.8833 - val_loss: 0.5170 - val_accuracy: 0.8667
Epoch 14/30
45/45 [==============================] - 4s 96ms/step - loss: 0.4426 - accuracy: 0.8903 - val_loss: 0.4971 - val_accuracy: 0.8833
Epoch 15/30
45/45 [==============================] - 5s 102ms/step - loss: 0.4286 - accuracy: 0.8847 - val_loss: 0.5016 - val_accuracy: 0.8667
Epoch 16/30
45/45 [==============================] - 6s 127ms/step - loss: 0.4709 - accuracy: 0.8792 - val_loss: 0.5297 - val_accuracy: 0.8278
Epoch 17/30
45/45 [==============================] - 5s 103ms/step - loss: 0.4726 - accuracy: 0.8750 - val_loss: 0.5372 - val_accuracy: 0.8556
8/8 [==============================] - 1s 62ms/step
Epoch 1/30
45/45 [==============================] - 7s 128ms/step - loss: 4.0462 - accuracy: 0.4681 - val_loss: 2.2382 - val_accuracy: 0.7333
Epoch 2/30
45/45 [==============================] - 4s 98ms/step - loss: 1.7277 - accuracy: 0.7139 - val_loss: 1.3681 - val_accuracy: 0.7667
Epoch 3/30
45/45 [==============================] - 5s 108ms/step - loss: 1.2290 - accuracy: 0.7528 - val_loss: 1.0856 - val_accuracy: 0.7889
Epoch 4/30
45/45 [==============================] - 5s 107ms/step - loss: 1.0098 - accuracy: 0.8014 - val_loss: 0.9981 - val_accuracy: 0.7444
Epoch 5/30
45/45 [==============================] - 5s 100ms/step - loss: 0.9548 - accuracy: 0.7861 - val_loss: 0.9155 - val_accuracy: 0.7778
Epoch 6/30
45/45 [==============================] - 5s 121ms/step - loss: 0.8491 - accuracy: 0.8153 - val_loss: 0.8083 - val_accuracy: 0.8278
Epoch 7/30
45/45 [==============================] - 5s 103ms/step - loss: 0.7952 - accuracy: 0.8278 - val_loss: 0.7837 - val_accuracy: 0.8167
Epoch 8/30
45/45 [==============================] - 5s 109ms/step - loss: 0.7456 - accuracy: 0.8306 - val_loss: 0.7930 - val_accuracy: 0.7833
Epoch 9/30
45/45 [==============================] - 5s 99ms/step - loss: 0.7659 - accuracy: 0.8139 - val_loss: 0.7198 - val_accuracy: 0.8278
Epoch 10/30
45/45 [==============================] - 5s 100ms/step - loss: 0.7099 - accuracy: 0.8472 - val_loss: 0.7234 - val_accuracy: 0.8278
Epoch 11/30
45/45 [==============================] - 5s 119ms/step - loss: 0.7086 - accuracy: 0.8292 - val_loss: 0.7448 - val_accuracy: 0.8056
Epoch 12/30
45/45 [==============================] - 4s 96ms/step - loss: 0.7009 - accuracy: 0.8347 - val_loss: 0.6964 - val_accuracy: 0.8333
Epoch 13/30
45/45 [==============================] - 5s 108ms/step - loss: 0.6782 - accuracy: 0.8403 - val_loss: 0.6583 - val_accuracy: 0.8389
Epoch 14/30
45/45 [==============================] - 4s 95ms/step - loss: 0.6587 - accuracy: 0.8528 - val_loss: 0.6719 - val_accuracy: 0.8333
Epoch 15/30
45/45 [==============================] - 6s 124ms/step - loss: 0.6851 - accuracy: 0.8264 - val_loss: 0.6799 - val_accuracy: 0.8278
Epoch 16/30
45/45 [==============================] - 5s 101ms/step - loss: 0.6406 - accuracy: 0.8528 - val_loss: 0.6261 - val_accuracy: 0.8444
Epoch 17/30
45/45 [==============================] - 5s 114ms/step - loss: 0.6098 - accuracy: 0.8556 - val_loss: 0.6292 - val_accuracy: 0.8556
Epoch 18/30
45/45 [==============================] - 5s 121ms/step - loss: 0.6412 - accuracy: 0.8333 - val_loss: 0.6479 - val_accuracy: 0.8556
Epoch 19/30
45/45 [==============================] - 4s 97ms/step - loss: 0.6746 - accuracy: 0.8292 - val_loss: 0.6517 - val_accuracy: 0.8444
8/8 [==============================] - 1s 64ms/step
Epoch 1/30
45/45 [==============================] - 6s 103ms/step - loss: 24.8476 - accuracy: 0.4056 - val_loss: 7.8972 - val_accuracy: 0.4722
Epoch 2/30
45/45 [==============================] - 5s 120ms/step - loss: 3.8648 - accuracy: 0.5917 - val_loss: 1.8139 - val_accuracy: 0.6944
Epoch 3/30
45/45 [==============================] - 6s 125ms/step - loss: 1.5127 - accuracy: 0.6625 - val_loss: 1.2581 - val_accuracy: 0.7556
Epoch 4/30
45/45 [==============================] - 5s 104ms/step - loss: 1.2067 - accuracy: 0.7056 - val_loss: 1.1633 - val_accuracy: 0.7444
Epoch 5/30
45/45 [==============================] - 6s 126ms/step - loss: 1.1786 - accuracy: 0.6875 - val_loss: 1.0777 - val_accuracy: 0.7611
Epoch 6/30
45/45 [==============================] - 5s 108ms/step - loss: 1.1057 - accuracy: 0.7097 - val_loss: 1.0668 - val_accuracy: 0.7167
Epoch 7/30
45/45 [==============================] - 5s 108ms/step - loss: 1.0593 - accuracy: 0.7222 - val_loss: 1.0378 - val_accuracy: 0.7278
Epoch 8/30
45/45 [==============================] - 4s 94ms/step - loss: 1.0743 - accuracy: 0.6958 - val_loss: 1.0218 - val_accuracy: 0.7222
Epoch 9/30
45/45 [==============================] - 6s 123ms/step - loss: 1.0501 - accuracy: 0.7125 - val_loss: 1.0893 - val_accuracy: 0.6500
Epoch 10/30
45/45 [==============================] - 4s 100ms/step - loss: 1.0639 - accuracy: 0.7153 - val_loss: 1.0202 - val_accuracy: 0.7500
Epoch 11/30
45/45 [==============================] - 4s 96ms/step - loss: 1.0504 - accuracy: 0.7069 - val_loss: 0.9768 - val_accuracy: 0.7944
Epoch 12/30
45/45 [==============================] - 5s 121ms/step - loss: 1.0685 - accuracy: 0.7167 - val_loss: 1.0429 - val_accuracy: 0.7111
Epoch 13/30
45/45 [==============================] - 5s 122ms/step - loss: 1.0571 - accuracy: 0.7139 - val_loss: 0.9714 - val_accuracy: 0.7389
Epoch 14/30
45/45 [==============================] - 5s 100ms/step - loss: 1.0015 - accuracy: 0.7306 - val_loss: 0.9764 - val_accuracy: 0.7611
Epoch 15/30
45/45 [==============================] - 4s 95ms/step - loss: 1.0539 - accuracy: 0.7056 - val_loss: 0.9484 - val_accuracy: 0.8111
Epoch 16/30
45/45 [==============================] - 5s 113ms/step - loss: 1.0042 - accuracy: 0.7389 - val_loss: 0.9823 - val_accuracy: 0.7222
Epoch 17/30
45/45 [==============================] - 5s 100ms/step - loss: 0.9735 - accuracy: 0.7528 - val_loss: 0.9282 - val_accuracy: 0.8167
Epoch 18/30
45/45 [==============================] - 6s 124ms/step - loss: 0.9809 - accuracy: 0.7458 - val_loss: 0.9583 - val_accuracy: 0.7556
Epoch 19/30
45/45 [==============================] - 4s 94ms/step - loss: 0.9912 - accuracy: 0.7389 - val_loss: 0.9818 - val_accuracy: 0.7167
Epoch 20/30
45/45 [==============================] - 5s 100ms/step - loss: 0.9838 - accuracy: 0.7292 - val_loss: 0.9146 - val_accuracy: 0.7778
Epoch 21/30
45/45 [==============================] - 5s 118ms/step - loss: 0.9845 - accuracy: 0.7292 - val_loss: 0.9368 - val_accuracy: 0.8056
Epoch 22/30
45/45 [==============================] - 4s 99ms/step - loss: 0.9727 - accuracy: 0.7403 - val_loss: 0.9359 - val_accuracy: 0.7778
Epoch 23/30
45/45 [==============================] - 5s 107ms/step - loss: 0.9842 - accuracy: 0.7222 - val_loss: 0.9392 - val_accuracy: 0.7611
8/8 [==============================] - 1s 64ms/step
Epoch 1/30
23/23 [==============================] - 6s 203ms/step - loss: 1.4600 - accuracy: 0.5958 - val_loss: 1.1009 - val_accuracy: 0.7167
Epoch 2/30
23/23 [==============================] - 4s 182ms/step - loss: 0.9170 - accuracy: 0.7889 - val_loss: 0.8237 - val_accuracy: 0.7667
Epoch 3/30
23/23 [==============================] - 5s 219ms/step - loss: 0.7200 - accuracy: 0.8319 - val_loss: 0.7084 - val_accuracy: 0.8000
Epoch 4/30
23/23 [==============================] - 4s 180ms/step - loss: 0.6159 - accuracy: 0.8556 - val_loss: 0.6408 - val_accuracy: 0.8444
Epoch 5/30
23/23 [==============================] - 5s 228ms/step - loss: 0.5472 - accuracy: 0.8681 - val_loss: 0.6128 - val_accuracy: 0.8444
Epoch 6/30
23/23 [==============================] - 4s 191ms/step - loss: 0.5094 - accuracy: 0.8861 - val_loss: 0.5887 - val_accuracy: 0.8556
Epoch 7/30
23/23 [==============================] - 4s 199ms/step - loss: 0.4477 - accuracy: 0.9125 - val_loss: 0.5366 - val_accuracy: 0.8500
Epoch 8/30
23/23 [==============================] - 5s 219ms/step - loss: 0.4679 - accuracy: 0.8792 - val_loss: 0.5614 - val_accuracy: 0.8278
Epoch 9/30
23/23 [==============================] - 4s 175ms/step - loss: 0.4397 - accuracy: 0.9000 - val_loss: 0.5769 - val_accuracy: 0.8389
Epoch 10/30
23/23 [==============================] - 5s 197ms/step - loss: 0.4299 - accuracy: 0.8986 - val_loss: 0.5542 - val_accuracy: 0.8667
8/8 [==============================] - 1s 62ms/step
Epoch 1/30
23/23 [==============================] - 6s 194ms/step - loss: 4.7285 - accuracy: 0.5556 - val_loss: 3.2357 - val_accuracy: 0.6389
Epoch 2/30
23/23 [==============================] - 5s 210ms/step - loss: 2.4075 - accuracy: 0.7403 - val_loss: 1.7809 - val_accuracy: 0.7889
Epoch 3/30
23/23 [==============================] - 4s 184ms/step - loss: 1.4424 - accuracy: 0.8042 - val_loss: 1.2189 - val_accuracy: 0.7833
Epoch 4/30
23/23 [==============================] - 4s 193ms/step - loss: 1.0349 - accuracy: 0.8222 - val_loss: 0.9970 - val_accuracy: 0.8056
Epoch 5/30
23/23 [==============================] - 5s 236ms/step - loss: 0.8575 - accuracy: 0.8583 - val_loss: 0.8841 - val_accuracy: 0.8222
Epoch 6/30
23/23 [==============================] - 4s 179ms/step - loss: 0.7808 - accuracy: 0.8458 - val_loss: 0.9075 - val_accuracy: 0.7333
Epoch 7/30
23/23 [==============================] - 4s 186ms/step - loss: 0.7260 - accuracy: 0.8472 - val_loss: 0.7732 - val_accuracy: 0.8056
Epoch 8/30
23/23 [==============================] - 4s 191ms/step - loss: 0.6792 - accuracy: 0.8472 - val_loss: 0.8061 - val_accuracy: 0.8333
Epoch 9/30
23/23 [==============================] - 5s 235ms/step - loss: 0.6261 - accuracy: 0.8708 - val_loss: 0.6866 - val_accuracy: 0.8500
Epoch 10/30
23/23 [==============================] - 4s 187ms/step - loss: 0.6125 - accuracy: 0.8750 - val_loss: 0.7160 - val_accuracy: 0.8389
Epoch 11/30
23/23 [==============================] - 4s 190ms/step - loss: 0.6162 - accuracy: 0.8681 - val_loss: 0.6652 - val_accuracy: 0.7889
Epoch 12/30
23/23 [==============================] - 5s 214ms/step - loss: 0.5817 - accuracy: 0.8764 - val_loss: 0.6210 - val_accuracy: 0.8611
Epoch 13/30
23/23 [==============================] - 4s 183ms/step - loss: 0.5345 - accuracy: 0.9042 - val_loss: 0.6120 - val_accuracy: 0.8667
Epoch 14/30
23/23 [==============================] - 6s 283ms/step - loss: 0.5149 - accuracy: 0.9000 - val_loss: 0.5935 - val_accuracy: 0.8556
Epoch 15/30
23/23 [==============================] - 4s 179ms/step - loss: 0.5254 - accuracy: 0.8917 - val_loss: 0.6545 - val_accuracy: 0.8444
Epoch 16/30
23/23 [==============================] - 4s 193ms/step - loss: 0.5347 - accuracy: 0.8736 - val_loss: 0.5741 - val_accuracy: 0.8556
Epoch 17/30
23/23 [==============================] - 5s 229ms/step - loss: 0.5125 - accuracy: 0.8861 - val_loss: 0.5651 - val_accuracy: 0.8556
Epoch 18/30
23/23 [==============================] - 4s 189ms/step - loss: 0.5052 - accuracy: 0.8875 - val_loss: 0.6047 - val_accuracy: 0.8444
Epoch 19/30
23/23 [==============================] - 5s 214ms/step - loss: 0.4937 - accuracy: 0.8847 - val_loss: 0.5824 - val_accuracy: 0.8500
Epoch 20/30
23/23 [==============================] - 4s 189ms/step - loss: 0.4874 - accuracy: 0.8972 - val_loss: 0.5877 - val_accuracy: 0.8556
8/8 [==============================] - 1s 63ms/step
Epoch 1/30
23/23 [==============================] - 6s 209ms/step - loss: 34.9768 - accuracy: 0.4472 - val_loss: 20.1086 - val_accuracy: 0.6333
Epoch 2/30
23/23 [==============================] - 4s 194ms/step - loss: 12.5870 - accuracy: 0.5958 - val_loss: 6.8516 - val_accuracy: 0.6556
Epoch 3/30
23/23 [==============================] - 5s 227ms/step - loss: 4.3379 - accuracy: 0.6806 - val_loss: 2.5542 - val_accuracy: 0.7222
Epoch 4/30
23/23 [==============================] - 4s 194ms/step - loss: 1.8453 - accuracy: 0.7528 - val_loss: 1.3916 - val_accuracy: 0.7611
Epoch 5/30
23/23 [==============================] - 5s 198ms/step - loss: 1.1966 - accuracy: 0.7528 - val_loss: 1.1278 - val_accuracy: 0.7056
Epoch 6/30
23/23 [==============================] - 5s 200ms/step - loss: 1.0418 - accuracy: 0.7792 - val_loss: 1.0214 - val_accuracy: 0.7833
Epoch 7/30
23/23 [==============================] - 4s 183ms/step - loss: 0.9659 - accuracy: 0.7903 - val_loss: 0.9736 - val_accuracy: 0.8000
Epoch 8/30
23/23 [==============================] - 5s 210ms/step - loss: 0.9258 - accuracy: 0.7986 - val_loss: 0.9598 - val_accuracy: 0.7611
Epoch 9/30
23/23 [==============================] - 4s 193ms/step - loss: 0.8761 - accuracy: 0.8139 - val_loss: 0.9330 - val_accuracy: 0.7667
Epoch 10/30
23/23 [==============================] - 4s 191ms/step - loss: 0.8755 - accuracy: 0.8125 - val_loss: 0.8911 - val_accuracy: 0.7944
Epoch 11/30
23/23 [==============================] - 6s 243ms/step - loss: 0.8626 - accuracy: 0.8014 - val_loss: 0.8622 - val_accuracy: 0.8056
Epoch 12/30
23/23 [==============================] - 4s 188ms/step - loss: 0.8633 - accuracy: 0.7917 - val_loss: 0.9841 - val_accuracy: 0.6778
Epoch 13/30
23/23 [==============================] - 4s 182ms/step - loss: 0.8628 - accuracy: 0.7917 - val_loss: 0.8887 - val_accuracy: 0.7722
Epoch 14/30
23/23 [==============================] - 5s 226ms/step - loss: 0.8378 - accuracy: 0.8069 - val_loss: 0.8718 - val_accuracy: 0.8167
8/8 [==============================] - 1s 62ms/step
Epoch 1/30
23/23 [==============================] - 6s 201ms/step - loss: 1.5697 - accuracy: 0.5069 - val_loss: 1.1841 - val_accuracy: 0.6833
Epoch 2/30
23/23 [==============================] - 5s 226ms/step - loss: 1.0202 - accuracy: 0.7250 - val_loss: 0.8981 - val_accuracy: 0.7556
Epoch 3/30
23/23 [==============================] - 4s 191ms/step - loss: 0.7940 - accuracy: 0.8000 - val_loss: 0.7869 - val_accuracy: 0.7722
Epoch 4/30
23/23 [==============================] - 5s 212ms/step - loss: 0.6843 - accuracy: 0.8389 - val_loss: 0.6881 - val_accuracy: 0.8167
Epoch 5/30
23/23 [==============================] - 4s 181ms/step - loss: 0.5966 - accuracy: 0.8486 - val_loss: 0.6464 - val_accuracy: 0.8278
Epoch 6/30
23/23 [==============================] - 4s 178ms/step - loss: 0.5621 - accuracy: 0.8681 - val_loss: 0.6038 - val_accuracy: 0.8333
Epoch 7/30
23/23 [==============================] - 6s 241ms/step - loss: 0.5383 - accuracy: 0.8569 - val_loss: 0.6132 - val_accuracy: 0.8333
Epoch 8/30
23/23 [==============================] - 4s 190ms/step - loss: 0.5172 - accuracy: 0.8764 - val_loss: 0.5653 - val_accuracy: 0.8556
Epoch 9/30
23/23 [==============================] - 4s 180ms/step - loss: 0.4721 - accuracy: 0.8903 - val_loss: 0.5597 - val_accuracy: 0.8556
Epoch 10/30
23/23 [==============================] - 5s 229ms/step - loss: 0.4578 - accuracy: 0.8861 - val_loss: 0.5345 - val_accuracy: 0.8667
Epoch 11/30
23/23 [==============================] - 4s 179ms/step - loss: 0.4252 - accuracy: 0.9056 - val_loss: 0.5379 - val_accuracy: 0.8500
Epoch 12/30
23/23 [==============================] - 5s 225ms/step - loss: 0.4286 - accuracy: 0.8903 - val_loss: 0.5161 - val_accuracy: 0.8611
Epoch 13/30
23/23 [==============================] - 4s 193ms/step - loss: 0.4264 - accuracy: 0.9042 - val_loss: 0.4939 - val_accuracy: 0.8778
Epoch 14/30
23/23 [==============================] - 5s 232ms/step - loss: 0.4007 - accuracy: 0.9097 - val_loss: 0.4799 - val_accuracy: 0.8889
Epoch 15/30
23/23 [==============================] - 5s 220ms/step - loss: 0.4147 - accuracy: 0.8931 - val_loss: 0.4838 - val_accuracy: 0.8833
Epoch 16/30
23/23 [==============================] - 4s 189ms/step - loss: 0.3962 - accuracy: 0.9111 - val_loss: 0.5753 - val_accuracy: 0.8611
Epoch 17/30
23/23 [==============================] - 4s 179ms/step - loss: 0.3766 - accuracy: 0.9236 - val_loss: 0.4746 - val_accuracy: 0.8778
Epoch 18/30
23/23 [==============================] - 5s 240ms/step - loss: 0.3757 - accuracy: 0.9139 - val_loss: 0.4671 - val_accuracy: 0.8889
Epoch 19/30
23/23 [==============================] - 5s 201ms/step - loss: 0.3666 - accuracy: 0.9194 - val_loss: 0.4834 - val_accuracy: 0.8722
Epoch 20/30
23/23 [==============================] - 5s 196ms/step - loss: 0.3624 - accuracy: 0.9167 - val_loss: 0.4544 - val_accuracy: 0.8944
Epoch 21/30
23/23 [==============================] - 4s 192ms/step - loss: 0.3218 - accuracy: 0.9431 - val_loss: 0.4395 - val_accuracy: 0.8944
Epoch 22/30
23/23 [==============================] - 5s 240ms/step - loss: 0.3468 - accuracy: 0.9181 - val_loss: 0.4340 - val_accuracy: 0.8889
Epoch 23/30
23/23 [==============================] - 4s 187ms/step - loss: 0.3424 - accuracy: 0.9250 - val_loss: 0.4342 - val_accuracy: 0.8889
Epoch 24/30
23/23 [==============================] - 6s 268ms/step - loss: 0.3268 - accuracy: 0.9333 - val_loss: 0.4348 - val_accuracy: 0.9000
Epoch 25/30
23/23 [==============================] - 5s 196ms/step - loss: 0.3180 - accuracy: 0.9361 - val_loss: 0.4484 - val_accuracy: 0.9000
8/8 [==============================] - 1s 63ms/step
Epoch 1/30
23/23 [==============================] - 7s 247ms/step - loss: 4.8685 - accuracy: 0.4958 - val_loss: 3.3176 - val_accuracy: 0.6833
Epoch 2/30
23/23 [==============================] - 4s 187ms/step - loss: 2.5286 - accuracy: 0.7333 - val_loss: 1.8899 - val_accuracy: 0.7500
Epoch 3/30
23/23 [==============================] - 5s 240ms/step - loss: 1.5615 - accuracy: 0.7583 - val_loss: 1.3534 - val_accuracy: 0.7333
Epoch 4/30
23/23 [==============================] - 5s 201ms/step - loss: 1.1604 - accuracy: 0.7944 - val_loss: 1.0550 - val_accuracy: 0.8222
Epoch 5/30
23/23 [==============================] - 5s 207ms/step - loss: 0.9612 - accuracy: 0.8181 - val_loss: 0.9527 - val_accuracy: 0.8056
Epoch 6/30
23/23 [==============================] - 4s 195ms/step - loss: 0.8433 - accuracy: 0.8389 - val_loss: 0.8418 - val_accuracy: 0.8278
Epoch 7/30
23/23 [==============================] - 5s 224ms/step - loss: 0.7726 - accuracy: 0.8486 - val_loss: 0.7869 - val_accuracy: 0.8444
Epoch 8/30
23/23 [==============================] - 4s 191ms/step - loss: 0.7214 - accuracy: 0.8458 - val_loss: 0.7408 - val_accuracy: 0.8389
Epoch 9/30
23/23 [==============================] - 5s 212ms/step - loss: 0.6968 - accuracy: 0.8375 - val_loss: 0.7218 - val_accuracy: 0.8500
Epoch 10/30
23/23 [==============================] - 4s 194ms/step - loss: 0.6574 - accuracy: 0.8569 - val_loss: 0.6992 - val_accuracy: 0.8389
Epoch 11/30
23/23 [==============================] - 5s 237ms/step - loss: 0.6137 - accuracy: 0.8681 - val_loss: 0.6576 - val_accuracy: 0.8444
Epoch 12/30
23/23 [==============================] - 4s 181ms/step - loss: 0.6157 - accuracy: 0.8667 - val_loss: 0.6333 - val_accuracy: 0.8722
Epoch 13/30
23/23 [==============================] - 5s 224ms/step - loss: 0.5968 - accuracy: 0.8764 - val_loss: 0.6512 - val_accuracy: 0.8222
Epoch 14/30
23/23 [==============================] - 4s 181ms/step - loss: 0.6084 - accuracy: 0.8500 - val_loss: 0.6662 - val_accuracy: 0.8389
Epoch 15/30
23/23 [==============================] - 4s 191ms/step - loss: 0.5923 - accuracy: 0.8681 - val_loss: 0.6269 - val_accuracy: 0.8500
Epoch 16/30
23/23 [==============================] - 5s 205ms/step - loss: 0.5554 - accuracy: 0.8681 - val_loss: 0.5969 - val_accuracy: 0.8500
Epoch 17/30
23/23 [==============================] - 4s 180ms/step - loss: 0.5745 - accuracy: 0.8583 - val_loss: 0.6001 - val_accuracy: 0.8556
Epoch 18/30
23/23 [==============================] - 5s 232ms/step - loss: 0.5518 - accuracy: 0.8847 - val_loss: 0.5996 - val_accuracy: 0.8389
Epoch 19/30
23/23 [==============================] - 4s 193ms/step - loss: 0.5614 - accuracy: 0.8750 - val_loss: 0.6229 - val_accuracy: 0.8444
8/8 [==============================] - 1s 63ms/step
Epoch 1/30
23/23 [==============================] - 6s 220ms/step - loss: 34.8574 - accuracy: 0.4208 - val_loss: 20.0222 - val_accuracy: 0.6944
Epoch 2/30
23/23 [==============================] - 4s 191ms/step - loss: 12.6495 - accuracy: 0.6069 - val_loss: 6.7892 - val_accuracy: 0.7500
Epoch 3/30
23/23 [==============================] - 5s 218ms/step - loss: 4.3614 - accuracy: 0.6972 - val_loss: 2.5349 - val_accuracy: 0.7611
Epoch 4/30
23/23 [==============================] - 5s 230ms/step - loss: 1.8574 - accuracy: 0.7208 - val_loss: 1.4100 - val_accuracy: 0.7167
Epoch 5/30
23/23 [==============================] - 4s 183ms/step - loss: 1.2106 - accuracy: 0.7458 - val_loss: 1.1271 - val_accuracy: 0.7833
Epoch 6/30
23/23 [==============================] - 4s 190ms/step - loss: 1.0579 - accuracy: 0.7694 - val_loss: 1.0330 - val_accuracy: 0.7556
Epoch 7/30
23/23 [==============================] - 5s 226ms/step - loss: 0.9961 - accuracy: 0.7653 - val_loss: 0.9804 - val_accuracy: 0.7556
Epoch 8/30
23/23 [==============================] - 5s 231ms/step - loss: 0.9488 - accuracy: 0.7764 - val_loss: 0.9526 - val_accuracy: 0.7722
Epoch 9/30
23/23 [==============================] - 4s 186ms/step - loss: 0.9240 - accuracy: 0.7875 - val_loss: 0.9812 - val_accuracy: 0.7333
Epoch 10/30
23/23 [==============================] - 6s 242ms/step - loss: 0.9211 - accuracy: 0.7639 - val_loss: 0.9284 - val_accuracy: 0.7778
Epoch 11/30
23/23 [==============================] - 4s 182ms/step - loss: 0.8876 - accuracy: 0.8083 - val_loss: 0.8897 - val_accuracy: 0.7944
Epoch 12/30
23/23 [==============================] - 4s 179ms/step - loss: 0.9410 - accuracy: 0.7514 - val_loss: 0.9276 - val_accuracy: 0.7556
Epoch 13/30
23/23 [==============================] - 5s 235ms/step - loss: 0.9023 - accuracy: 0.7694 - val_loss: 0.8764 - val_accuracy: 0.8000
Epoch 14/30
23/23 [==============================] - 5s 225ms/step - loss: 0.8709 - accuracy: 0.7972 - val_loss: 0.8648 - val_accuracy: 0.7889
Epoch 15/30
23/23 [==============================] - 4s 191ms/step - loss: 0.8521 - accuracy: 0.7903 - val_loss: 0.9058 - val_accuracy: 0.7944
Epoch 16/30
23/23 [==============================] - 5s 227ms/step - loss: 0.8639 - accuracy: 0.7847 - val_loss: 0.8498 - val_accuracy: 0.7722
Epoch 17/30
23/23 [==============================] - 5s 208ms/step - loss: 0.8221 - accuracy: 0.8069 - val_loss: 0.8914 - val_accuracy: 0.7444
Epoch 18/30
23/23 [==============================] - 6s 242ms/step - loss: 0.8103 - accuracy: 0.8111 - val_loss: 0.8574 - val_accuracy: 0.8111
Epoch 19/30
23/23 [==============================] - 4s 179ms/step - loss: 0.8077 - accuracy: 0.7917 - val_loss: 1.0006 - val_accuracy: 0.7056
8/8 [==============================] - 1s 63ms/step
Epoch 1/30
23/23 [==============================] - 7s 208ms/step - loss: 1.6170 - accuracy: 0.4903 - val_loss: 1.1984 - val_accuracy: 0.7056
Epoch 2/30
23/23 [==============================] - 4s 192ms/step - loss: 1.0687 - accuracy: 0.7125 - val_loss: 0.9838 - val_accuracy: 0.6944
Epoch 3/30
23/23 [==============================] - 5s 240ms/step - loss: 0.8741 - accuracy: 0.7722 - val_loss: 0.8114 - val_accuracy: 0.7889
Epoch 4/30
23/23 [==============================] - 5s 197ms/step - loss: 0.7513 - accuracy: 0.8056 - val_loss: 0.7331 - val_accuracy: 0.8000
Epoch 5/30
23/23 [==============================] - 5s 216ms/step - loss: 0.6678 - accuracy: 0.8347 - val_loss: 0.6886 - val_accuracy: 0.8111
Epoch 6/30
23/23 [==============================] - 4s 182ms/step - loss: 0.6567 - accuracy: 0.8264 - val_loss: 0.6606 - val_accuracy: 0.8167
Epoch 7/30
23/23 [==============================] - 5s 229ms/step - loss: 0.6076 - accuracy: 0.8431 - val_loss: 0.6173 - val_accuracy: 0.8333
Epoch 8/30
23/23 [==============================] - 5s 197ms/step - loss: 0.5551 - accuracy: 0.8597 - val_loss: 0.5966 - val_accuracy: 0.8278
Epoch 9/30
23/23 [==============================] - 4s 182ms/step - loss: 0.5433 - accuracy: 0.8764 - val_loss: 0.5775 - val_accuracy: 0.8278
Epoch 10/30
23/23 [==============================] - 5s 237ms/step - loss: 0.5081 - accuracy: 0.8653 - val_loss: 0.5574 - val_accuracy: 0.8500
Epoch 11/30
23/23 [==============================] - 4s 182ms/step - loss: 0.4889 - accuracy: 0.8875 - val_loss: 0.5570 - val_accuracy: 0.8500
Epoch 12/30
23/23 [==============================] - 4s 182ms/step - loss: 0.4774 - accuracy: 0.8889 - val_loss: 0.5444 - val_accuracy: 0.8389
Epoch 13/30
23/23 [==============================] - 5s 220ms/step - loss: 0.4702 - accuracy: 0.8847 - val_loss: 0.5353 - val_accuracy: 0.8667
Epoch 14/30
23/23 [==============================] - 4s 183ms/step - loss: 0.4748 - accuracy: 0.8806 - val_loss: 0.5143 - val_accuracy: 0.8500
Epoch 15/30
23/23 [==============================] - 5s 216ms/step - loss: 0.4571 - accuracy: 0.8958 - val_loss: 0.5564 - val_accuracy: 0.8444
Epoch 16/30
23/23 [==============================] - 4s 182ms/step - loss: 0.4487 - accuracy: 0.8917 - val_loss: 0.5194 - val_accuracy: 0.8778
Epoch 17/30
23/23 [==============================] - 4s 194ms/step - loss: 0.4352 - accuracy: 0.8972 - val_loss: 0.5032 - val_accuracy: 0.8667
Epoch 18/30
23/23 [==============================] - 5s 229ms/step - loss: 0.4211 - accuracy: 0.8903 - val_loss: 0.5539 - val_accuracy: 0.8444
Epoch 19/30
23/23 [==============================] - 4s 182ms/step - loss: 0.4338 - accuracy: 0.8917 - val_loss: 0.4881 - val_accuracy: 0.8778
Epoch 20/30
23/23 [==============================] - 4s 185ms/step - loss: 0.4243 - accuracy: 0.8972 - val_loss: 0.4787 - val_accuracy: 0.8667
Epoch 21/30
23/23 [==============================] - 5s 229ms/step - loss: 0.4075 - accuracy: 0.8972 - val_loss: 0.4776 - val_accuracy: 0.8722
Epoch 22/30
23/23 [==============================] - 5s 217ms/step - loss: 0.3835 - accuracy: 0.9222 - val_loss: 0.4642 - val_accuracy: 0.8833
Epoch 23/30
23/23 [==============================] - 4s 181ms/step - loss: 0.3949 - accuracy: 0.9097 - val_loss: 0.4834 - val_accuracy: 0.8611
Epoch 24/30
23/23 [==============================] - 4s 194ms/step - loss: 0.4084 - accuracy: 0.9069 - val_loss: 0.4787 - val_accuracy: 0.8944
Epoch 25/30
23/23 [==============================] - 5s 228ms/step - loss: 0.3975 - accuracy: 0.8917 - val_loss: 0.4587 - val_accuracy: 0.8667
Epoch 26/30
23/23 [==============================] - 5s 194ms/step - loss: 0.3846 - accuracy: 0.9139 - val_loss: 0.4674 - val_accuracy: 0.8722
Epoch 27/30
23/23 [==============================] - 5s 231ms/step - loss: 0.3762 - accuracy: 0.9083 - val_loss: 0.4725 - val_accuracy: 0.8778
Epoch 28/30
23/23 [==============================] - 4s 183ms/step - loss: 0.3789 - accuracy: 0.9167 - val_loss: 0.4660 - val_accuracy: 0.8889
8/8 [==============================] - 1s 62ms/step
Epoch 1/30
23/23 [==============================] - 7s 242ms/step - loss: 5.0600 - accuracy: 0.3750 - val_loss: 3.4805 - val_accuracy: 0.6944
Epoch 2/30
23/23 [==============================] - 5s 205ms/step - loss: 2.7229 - accuracy: 0.6444 - val_loss: 2.0623 - val_accuracy: 0.7556
Epoch 3/30
23/23 [==============================] - 5s 205ms/step - loss: 1.7850 - accuracy: 0.7139 - val_loss: 1.4677 - val_accuracy: 0.7722
Epoch 4/30
23/23 [==============================] - 4s 184ms/step - loss: 1.3303 - accuracy: 0.7500 - val_loss: 1.2417 - val_accuracy: 0.7444
Epoch 5/30
23/23 [==============================] - 5s 240ms/step - loss: 1.1411 - accuracy: 0.7903 - val_loss: 1.0568 - val_accuracy: 0.7944
Epoch 6/30
23/23 [==============================] - 4s 192ms/step - loss: 0.9708 - accuracy: 0.8153 - val_loss: 0.9800 - val_accuracy: 0.7889
Epoch 7/30
23/23 [==============================] - 5s 207ms/step - loss: 0.9346 - accuracy: 0.7931 - val_loss: 0.8946 - val_accuracy: 0.8222
Epoch 8/30
23/23 [==============================] - 4s 188ms/step - loss: 0.8508 - accuracy: 0.8319 - val_loss: 0.8595 - val_accuracy: 0.7889
Epoch 9/30
23/23 [==============================] - 4s 193ms/step - loss: 0.7987 - accuracy: 0.8361 - val_loss: 0.8108 - val_accuracy: 0.8389
Epoch 10/30
23/23 [==============================] - 5s 237ms/step - loss: 0.7796 - accuracy: 0.8208 - val_loss: 0.7814 - val_accuracy: 0.8444
Epoch 11/30
23/23 [==============================] - 4s 192ms/step - loss: 0.7404 - accuracy: 0.8375 - val_loss: 0.7902 - val_accuracy: 0.8111
Epoch 12/30
23/23 [==============================] - 4s 183ms/step - loss: 0.7093 - accuracy: 0.8472 - val_loss: 0.7123 - val_accuracy: 0.8444
Epoch 13/30
23/23 [==============================] - 5s 239ms/step - loss: 0.6891 - accuracy: 0.8514 - val_loss: 0.7044 - val_accuracy: 0.8278
Epoch 14/30
23/23 [==============================] - 4s 186ms/step - loss: 0.6691 - accuracy: 0.8319 - val_loss: 0.6867 - val_accuracy: 0.8444
Epoch 15/30
23/23 [==============================] - 5s 200ms/step - loss: 0.6602 - accuracy: 0.8389 - val_loss: 0.6750 - val_accuracy: 0.8389
Epoch 16/30
23/23 [==============================] - 5s 201ms/step - loss: 0.6753 - accuracy: 0.8306 - val_loss: 0.6787 - val_accuracy: 0.8444
Epoch 17/30
23/23 [==============================] - 6s 241ms/step - loss: 0.6622 - accuracy: 0.8528 - val_loss: 0.6600 - val_accuracy: 0.8444
Epoch 18/30
23/23 [==============================] - 5s 198ms/step - loss: 0.6339 - accuracy: 0.8639 - val_loss: 0.6514 - val_accuracy: 0.8500
Epoch 19/30
23/23 [==============================] - 5s 215ms/step - loss: 0.6424 - accuracy: 0.8625 - val_loss: 0.6539 - val_accuracy: 0.8389
Epoch 20/30
23/23 [==============================] - 5s 200ms/step - loss: 0.6158 - accuracy: 0.8431 - val_loss: 0.6318 - val_accuracy: 0.8500
Epoch 21/30
23/23 [==============================] - 4s 191ms/step - loss: 0.6068 - accuracy: 0.8514 - val_loss: 0.6393 - val_accuracy: 0.8222
Epoch 22/30
23/23 [==============================] - 6s 244ms/step - loss: 0.6020 - accuracy: 0.8625 - val_loss: 0.6150 - val_accuracy: 0.8556
Epoch 23/30
23/23 [==============================] - 5s 197ms/step - loss: 0.5934 - accuracy: 0.8625 - val_loss: 0.6055 - val_accuracy: 0.8444
Epoch 24/30
23/23 [==============================] - 5s 197ms/step - loss: 0.5976 - accuracy: 0.8597 - val_loss: 0.6039 - val_accuracy: 0.8500
Epoch 25/30
23/23 [==============================] - 5s 192ms/step - loss: 0.5782 - accuracy: 0.8750 - val_loss: 0.6130 - val_accuracy: 0.8556
Epoch 26/30
23/23 [==============================] - 5s 194ms/step - loss: 0.5634 - accuracy: 0.8764 - val_loss: 0.5886 - val_accuracy: 0.8611
Epoch 27/30
23/23 [==============================] - 6s 242ms/step - loss: 0.5825 - accuracy: 0.8542 - val_loss: 0.6613 - val_accuracy: 0.8278
Epoch 28/30
23/23 [==============================] - 4s 182ms/step - loss: 0.5692 - accuracy: 0.8736 - val_loss: 0.5907 - val_accuracy: 0.8389
Epoch 29/30
23/23 [==============================] - 4s 185ms/step - loss: 0.6043 - accuracy: 0.8486 - val_loss: 0.6204 - val_accuracy: 0.8611
8/8 [==============================] - 1s 63ms/step
Epoch 1/30
23/23 [==============================] - 6s 198ms/step - loss: 35.4581 - accuracy: 0.3181 - val_loss: 20.4495 - val_accuracy: 0.5167
Epoch 2/30
23/23 [==============================] - 4s 194ms/step - loss: 12.9532 - accuracy: 0.5097 - val_loss: 7.1420 - val_accuracy: 0.6111
Epoch 3/30
23/23 [==============================] - 5s 229ms/step - loss: 4.6482 - accuracy: 0.6236 - val_loss: 2.7512 - val_accuracy: 0.7111
Epoch 4/30
23/23 [==============================] - 5s 235ms/step - loss: 2.0659 - accuracy: 0.6903 - val_loss: 1.5373 - val_accuracy: 0.7222
Epoch 5/30
23/23 [==============================] - 4s 188ms/step - loss: 1.3896 - accuracy: 0.6875 - val_loss: 1.2257 - val_accuracy: 0.7278
Epoch 6/30
23/23 [==============================] - 4s 193ms/step - loss: 1.1859 - accuracy: 0.6958 - val_loss: 1.1216 - val_accuracy: 0.7167
Epoch 7/30
23/23 [==============================] - 5s 220ms/step - loss: 1.0933 - accuracy: 0.7472 - val_loss: 1.0824 - val_accuracy: 0.7500
Epoch 8/30
23/23 [==============================] - 5s 195ms/step - loss: 1.0577 - accuracy: 0.7542 - val_loss: 1.0623 - val_accuracy: 0.6722
Epoch 9/30
23/23 [==============================] - 5s 229ms/step - loss: 1.0503 - accuracy: 0.7236 - val_loss: 1.0105 - val_accuracy: 0.8000
Epoch 10/30
23/23 [==============================] - 4s 193ms/step - loss: 1.0175 - accuracy: 0.7458 - val_loss: 0.9795 - val_accuracy: 0.7778
Epoch 11/30
23/23 [==============================] - 6s 241ms/step - loss: 1.0020 - accuracy: 0.7514 - val_loss: 0.9881 - val_accuracy: 0.7111
Epoch 12/30
23/23 [==============================] - 5s 195ms/step - loss: 0.9603 - accuracy: 0.7583 - val_loss: 0.9534 - val_accuracy: 0.7833
Epoch 13/30
23/23 [==============================] - 5s 222ms/step - loss: 0.9814 - accuracy: 0.7375 - val_loss: 0.9507 - val_accuracy: 0.7667
Epoch 14/30
23/23 [==============================] - 4s 191ms/step - loss: 0.9641 - accuracy: 0.7528 - val_loss: 0.9547 - val_accuracy: 0.7333
Epoch 15/30
23/23 [==============================] - 4s 191ms/step - loss: 0.9156 - accuracy: 0.7861 - val_loss: 0.9539 - val_accuracy: 0.7833
Epoch 16/30
23/23 [==============================] - 5s 235ms/step - loss: 0.9378 - accuracy: 0.7611 - val_loss: 0.9495 - val_accuracy: 0.7500
Epoch 17/30
23/23 [==============================] - 4s 194ms/step - loss: 0.9294 - accuracy: 0.7667 - val_loss: 0.8902 - val_accuracy: 0.8111
Epoch 18/30
23/23 [==============================] - 4s 183ms/step - loss: 0.9445 - accuracy: 0.7500 - val_loss: 0.9204 - val_accuracy: 0.7722
Epoch 19/30
23/23 [==============================] - 5s 205ms/step - loss: 0.9143 - accuracy: 0.7681 - val_loss: 0.8788 - val_accuracy: 0.7889
Epoch 20/30
23/23 [==============================] - 4s 180ms/step - loss: 0.8846 - accuracy: 0.7750 - val_loss: 0.8799 - val_accuracy: 0.8000
Epoch 21/30
23/23 [==============================] - 5s 230ms/step - loss: 0.9433 - accuracy: 0.7403 - val_loss: 0.9026 - val_accuracy: 0.7611
Epoch 22/30
23/23 [==============================] - 4s 184ms/step - loss: 0.9118 - accuracy: 0.7708 - val_loss: 0.9009 - val_accuracy: 0.7889
8/8 [==============================] - 1s 63ms/step
Epoch 1/30
12/12 [==============================] - 6s 375ms/step - loss: 1.7213 - accuracy: 0.4556 - val_loss: 1.3994 - val_accuracy: 0.6278
Epoch 2/30
12/12 [==============================] - 4s 389ms/step - loss: 1.1820 - accuracy: 0.6986 - val_loss: 1.1162 - val_accuracy: 0.6667
Epoch 3/30
12/12 [==============================] - 5s 435ms/step - loss: 0.9536 - accuracy: 0.7708 - val_loss: 0.9195 - val_accuracy: 0.7778
Epoch 4/30
12/12 [==============================] - 5s 394ms/step - loss: 0.8150 - accuracy: 0.8111 - val_loss: 0.7896 - val_accuracy: 0.7889
Epoch 5/30
12/12 [==============================] - 5s 366ms/step - loss: 0.6962 - accuracy: 0.8333 - val_loss: 0.7346 - val_accuracy: 0.8000
Epoch 6/30
12/12 [==============================] - 4s 369ms/step - loss: 0.6532 - accuracy: 0.8486 - val_loss: 0.6769 - val_accuracy: 0.8167
Epoch 7/30
12/12 [==============================] - 5s 439ms/step - loss: 0.5814 - accuracy: 0.8625 - val_loss: 0.6415 - val_accuracy: 0.8222
Epoch 8/30
12/12 [==============================] - 4s 369ms/step - loss: 0.5572 - accuracy: 0.8708 - val_loss: 0.6283 - val_accuracy: 0.8278
Epoch 9/30
12/12 [==============================] - 4s 343ms/step - loss: 0.5146 - accuracy: 0.8833 - val_loss: 0.5980 - val_accuracy: 0.8500
Epoch 10/30
12/12 [==============================] - 6s 452ms/step - loss: 0.4939 - accuracy: 0.8792 - val_loss: 0.5556 - val_accuracy: 0.8500
Epoch 11/30
12/12 [==============================] - 4s 348ms/step - loss: 0.4867 - accuracy: 0.9000 - val_loss: 0.5812 - val_accuracy: 0.8333
Epoch 12/30
12/12 [==============================] - 5s 456ms/step - loss: 0.4601 - accuracy: 0.8847 - val_loss: 0.5358 - val_accuracy: 0.8667
Epoch 13/30
12/12 [==============================] - 4s 369ms/step - loss: 0.4504 - accuracy: 0.8958 - val_loss: 0.5281 - val_accuracy: 0.8778
Epoch 14/30
12/12 [==============================] - 4s 360ms/step - loss: 0.4182 - accuracy: 0.9028 - val_loss: 0.5314 - val_accuracy: 0.8722
Epoch 15/30
12/12 [==============================] - 5s 431ms/step - loss: 0.4182 - accuracy: 0.9014 - val_loss: 0.5278 - val_accuracy: 0.8778
Epoch 16/30
12/12 [==============================] - 4s 347ms/step - loss: 0.4091 - accuracy: 0.9097 - val_loss: 0.4801 - val_accuracy: 0.8833
Epoch 17/30
12/12 [==============================] - 5s 424ms/step - loss: 0.3647 - accuracy: 0.9278 - val_loss: 0.4765 - val_accuracy: 0.8833
Epoch 18/30
12/12 [==============================] - 4s 343ms/step - loss: 0.3834 - accuracy: 0.9139 - val_loss: 0.4891 - val_accuracy: 0.8500
Epoch 19/30
12/12 [==============================] - 4s 342ms/step - loss: 0.3787 - accuracy: 0.9236 - val_loss: 0.4810 - val_accuracy: 0.8611
Epoch 20/30
12/12 [==============================] - 5s 427ms/step - loss: 0.3670 - accuracy: 0.9194 - val_loss: 0.4635 - val_accuracy: 0.8833
Epoch 21/30
12/12 [==============================] - 4s 338ms/step - loss: 0.3482 - accuracy: 0.9194 - val_loss: 0.4509 - val_accuracy: 0.8889
Epoch 22/30
12/12 [==============================] - 4s 352ms/step - loss: 0.3382 - accuracy: 0.9333 - val_loss: 0.4500 - val_accuracy: 0.8722
Epoch 23/30
12/12 [==============================] - 5s 367ms/step - loss: 0.3425 - accuracy: 0.9194 - val_loss: 0.4639 - val_accuracy: 0.8833
Epoch 24/30
12/12 [==============================] - 4s 365ms/step - loss: 0.3335 - accuracy: 0.9306 - val_loss: 0.4573 - val_accuracy: 0.8889
Epoch 25/30
12/12 [==============================] - 5s 446ms/step - loss: 0.3353 - accuracy: 0.9347 - val_loss: 0.4528 - val_accuracy: 0.8778
8/8 [==============================] - 1s 62ms/step
Epoch 1/30
12/12 [==============================] - 6s 374ms/step - loss: 5.5355 - accuracy: 0.4889 - val_loss: 4.3810 - val_accuracy: 0.7056
Epoch 2/30
12/12 [==============================] - 5s 429ms/step - loss: 3.7021 - accuracy: 0.6722 - val_loss: 3.0056 - val_accuracy: 0.7389
Epoch 3/30
12/12 [==============================] - 4s 366ms/step - loss: 2.5195 - accuracy: 0.7958 - val_loss: 2.1694 - val_accuracy: 0.7111
Epoch 4/30
12/12 [==============================] - 5s 441ms/step - loss: 1.8356 - accuracy: 0.7667 - val_loss: 1.6170 - val_accuracy: 0.8056
Epoch 5/30
12/12 [==============================] - 5s 387ms/step - loss: 1.3875 - accuracy: 0.8111 - val_loss: 1.2772 - val_accuracy: 0.8167
Epoch 6/30
12/12 [==============================] - 5s 359ms/step - loss: 1.1288 - accuracy: 0.8236 - val_loss: 1.0823 - val_accuracy: 0.8111
Epoch 7/30
12/12 [==============================] - 4s 347ms/step - loss: 0.9835 - accuracy: 0.8333 - val_loss: 0.9597 - val_accuracy: 0.8111
Epoch 8/30
12/12 [==============================] - 5s 425ms/step - loss: 0.8500 - accuracy: 0.8722 - val_loss: 0.8736 - val_accuracy: 0.8167
Epoch 9/30
12/12 [==============================] - 4s 366ms/step - loss: 0.7863 - accuracy: 0.8597 - val_loss: 0.8161 - val_accuracy: 0.8389
Epoch 10/30
12/12 [==============================] - 4s 371ms/step - loss: 0.7474 - accuracy: 0.8458 - val_loss: 0.8031 - val_accuracy: 0.8000
Epoch 11/30
12/12 [==============================] - 5s 431ms/step - loss: 0.7079 - accuracy: 0.8569 - val_loss: 0.7355 - val_accuracy: 0.8389
Epoch 12/30
12/12 [==============================] - 5s 370ms/step - loss: 0.6570 - accuracy: 0.8694 - val_loss: 0.7215 - val_accuracy: 0.8333
Epoch 13/30
12/12 [==============================] - 5s 369ms/step - loss: 0.6315 - accuracy: 0.8764 - val_loss: 0.7122 - val_accuracy: 0.8278
Epoch 14/30
12/12 [==============================] - 4s 370ms/step - loss: 0.6317 - accuracy: 0.8708 - val_loss: 0.6949 - val_accuracy: 0.8500
Epoch 15/30
12/12 [==============================] - 5s 459ms/step - loss: 0.5745 - accuracy: 0.8972 - val_loss: 0.6604 - val_accuracy: 0.8444
Epoch 16/30
12/12 [==============================] - 5s 380ms/step - loss: 0.5627 - accuracy: 0.8931 - val_loss: 0.6682 - val_accuracy: 0.8278
Epoch 17/30
12/12 [==============================] - 4s 389ms/step - loss: 0.5807 - accuracy: 0.8722 - val_loss: 0.6352 - val_accuracy: 0.8389
Epoch 18/30
12/12 [==============================] - 4s 347ms/step - loss: 0.5531 - accuracy: 0.8889 - val_loss: 0.6218 - val_accuracy: 0.8500
Epoch 19/30
12/12 [==============================] - 5s 446ms/step - loss: 0.5319 - accuracy: 0.9083 - val_loss: 0.6135 - val_accuracy: 0.8556
Epoch 20/30
12/12 [==============================] - 4s 339ms/step - loss: 0.5350 - accuracy: 0.8833 - val_loss: 0.6223 - val_accuracy: 0.8556
Epoch 21/30
12/12 [==============================] - 4s 359ms/step - loss: 0.5140 - accuracy: 0.8972 - val_loss: 0.6100 - val_accuracy: 0.8556
Epoch 22/30
12/12 [==============================] - 5s 400ms/step - loss: 0.5146 - accuracy: 0.8917 - val_loss: 0.5884 - val_accuracy: 0.8778
Epoch 23/30
12/12 [==============================] - 4s 343ms/step - loss: 0.5223 - accuracy: 0.9000 - val_loss: 0.5894 - val_accuracy: 0.8667
Epoch 24/30
12/12 [==============================] - 5s 435ms/step - loss: 0.4961 - accuracy: 0.8986 - val_loss: 0.5934 - val_accuracy: 0.8556
Epoch 25/30
12/12 [==============================] - 4s 344ms/step - loss: 0.4721 - accuracy: 0.9069 - val_loss: 0.5702 - val_accuracy: 0.8667
Epoch 26/30
12/12 [==============================] - 4s 345ms/step - loss: 0.4680 - accuracy: 0.9042 - val_loss: 0.5445 - val_accuracy: 0.8889
Epoch 27/30
12/12 [==============================] - 5s 445ms/step - loss: 0.4628 - accuracy: 0.9069 - val_loss: 0.5751 - val_accuracy: 0.8389
Epoch 28/30
12/12 [==============================] - 4s 336ms/step - loss: 0.4665 - accuracy: 0.8972 - val_loss: 0.5516 - val_accuracy: 0.8667
Epoch 29/30
12/12 [==============================] - 4s 368ms/step - loss: 0.4637 - accuracy: 0.9111 - val_loss: 0.5411 - val_accuracy: 0.8611
Epoch 30/30
12/12 [==============================] - 4s 344ms/step - loss: 0.4637 - accuracy: 0.9083 - val_loss: 0.5565 - val_accuracy: 0.8611
8/8 [==============================] - 1s 62ms/step
Epoch 1/30
12/12 [==============================] - 6s 439ms/step - loss: 42.3457 - accuracy: 0.3806 - val_loss: 32.5665 - val_accuracy: 0.3778
Epoch 2/30
12/12 [==============================] - 4s 339ms/step - loss: 25.9959 - accuracy: 0.5500 - val_loss: 19.0896 - val_accuracy: 0.6389
Epoch 3/30
12/12 [==============================] - 5s 428ms/step - loss: 14.7154 - accuracy: 0.6500 - val_loss: 10.8169 - val_accuracy: 0.6944
Epoch 4/30
12/12 [==============================] - 4s 344ms/step - loss: 8.4922 - accuracy: 0.6958 - val_loss: 6.0802 - val_accuracy: 0.6222
Epoch 5/30
12/12 [==============================] - 4s 343ms/step - loss: 4.6588 - accuracy: 0.7389 - val_loss: 3.5324 - val_accuracy: 0.6222
Epoch 6/30
12/12 [==============================] - 5s 434ms/step - loss: 2.8298 - accuracy: 0.7333 - val_loss: 2.1623 - val_accuracy: 0.7111
Epoch 7/30
12/12 [==============================] - 5s 386ms/step - loss: 1.7749 - accuracy: 0.7764 - val_loss: 1.5079 - val_accuracy: 0.7944
Epoch 8/30
12/12 [==============================] - 4s 346ms/step - loss: 1.3246 - accuracy: 0.7750 - val_loss: 1.1935 - val_accuracy: 0.7889
Epoch 9/30
12/12 [==============================] - 4s 364ms/step - loss: 1.0981 - accuracy: 0.7889 - val_loss: 1.0516 - val_accuracy: 0.7722
Epoch 10/30
12/12 [==============================] - 5s 450ms/step - loss: 0.9722 - accuracy: 0.8069 - val_loss: 0.9771 - val_accuracy: 0.7667
Epoch 11/30
12/12 [==============================] - 4s 346ms/step - loss: 0.9268 - accuracy: 0.7972 - val_loss: 0.9521 - val_accuracy: 0.7389
Epoch 12/30
12/12 [==============================] - 5s 399ms/step - loss: 0.9213 - accuracy: 0.7958 - val_loss: 0.9267 - val_accuracy: 0.7611
Epoch 13/30
12/12 [==============================] - 4s 343ms/step - loss: 0.8842 - accuracy: 0.8139 - val_loss: 0.9569 - val_accuracy: 0.7111
Epoch 14/30
12/12 [==============================] - 4s 347ms/step - loss: 0.8726 - accuracy: 0.7889 - val_loss: 0.8955 - val_accuracy: 0.7778
Epoch 15/30
12/12 [==============================] - 5s 438ms/step - loss: 0.8344 - accuracy: 0.8181 - val_loss: 0.9107 - val_accuracy: 0.7444
Epoch 16/30
12/12 [==============================] - 4s 361ms/step - loss: 0.8266 - accuracy: 0.8236 - val_loss: 0.8536 - val_accuracy: 0.8111
Epoch 17/30
12/12 [==============================] - 4s 361ms/step - loss: 0.8329 - accuracy: 0.7972 - val_loss: 0.9105 - val_accuracy: 0.7944
Epoch 18/30
12/12 [==============================] - 5s 390ms/step - loss: 0.8195 - accuracy: 0.8139 - val_loss: 0.8895 - val_accuracy: 0.8167
Epoch 19/30
12/12 [==============================] - 4s 374ms/step - loss: 0.8231 - accuracy: 0.7958 - val_loss: 0.8288 - val_accuracy: 0.8111
Epoch 20/30
12/12 [==============================] - 5s 386ms/step - loss: 0.7983 - accuracy: 0.8167 - val_loss: 0.8626 - val_accuracy: 0.7611
Epoch 21/30
12/12 [==============================] - 5s 381ms/step - loss: 0.7914 - accuracy: 0.8083 - val_loss: 0.8134 - val_accuracy: 0.8000
Epoch 22/30
12/12 [==============================] - 4s 334ms/step - loss: 0.7828 - accuracy: 0.8069 - val_loss: 0.8257 - val_accuracy: 0.7778
Epoch 23/30
12/12 [==============================] - 5s 453ms/step - loss: 0.7695 - accuracy: 0.8236 - val_loss: 0.8351 - val_accuracy: 0.7667
Epoch 24/30
12/12 [==============================] - 4s 339ms/step - loss: 0.7655 - accuracy: 0.8347 - val_loss: 0.8022 - val_accuracy: 0.8056
Epoch 25/30
12/12 [==============================] - 5s 376ms/step - loss: 0.7707 - accuracy: 0.8056 - val_loss: 0.8480 - val_accuracy: 0.7500
Epoch 26/30
12/12 [==============================] - 4s 338ms/step - loss: 0.7592 - accuracy: 0.8028 - val_loss: 0.8439 - val_accuracy: 0.7389
Epoch 27/30
12/12 [==============================] - 4s 361ms/step - loss: 0.7906 - accuracy: 0.8028 - val_loss: 0.8202 - val_accuracy: 0.7611
8/8 [==============================] - 1s 63ms/step
Epoch 1/30
12/12 [==============================] - 7s 391ms/step - loss: 1.7057 - accuracy: 0.4431 - val_loss: 1.3326 - val_accuracy: 0.7556
Epoch 2/30
12/12 [==============================] - 5s 442ms/step - loss: 1.2106 - accuracy: 0.6708 - val_loss: 1.0593 - val_accuracy: 0.7222
Epoch 3/30
12/12 [==============================] - 4s 367ms/step - loss: 0.9491 - accuracy: 0.7736 - val_loss: 0.9067 - val_accuracy: 0.7667
Epoch 4/30
12/12 [==============================] - 5s 439ms/step - loss: 0.8247 - accuracy: 0.8069 - val_loss: 0.8225 - val_accuracy: 0.7778
Epoch 5/30
12/12 [==============================] - 5s 397ms/step - loss: 0.7499 - accuracy: 0.8083 - val_loss: 0.7394 - val_accuracy: 0.8111
Epoch 6/30
12/12 [==============================] - 5s 354ms/step - loss: 0.6540 - accuracy: 0.8431 - val_loss: 0.6904 - val_accuracy: 0.8278
Epoch 7/30
12/12 [==============================] - 4s 352ms/step - loss: 0.6255 - accuracy: 0.8500 - val_loss: 0.6685 - val_accuracy: 0.8222
Epoch 8/30
12/12 [==============================] - 5s 430ms/step - loss: 0.5662 - accuracy: 0.8653 - val_loss: 0.6366 - val_accuracy: 0.8222
Epoch 9/30
12/12 [==============================] - 4s 340ms/step - loss: 0.5413 - accuracy: 0.8806 - val_loss: 0.6096 - val_accuracy: 0.8389
Epoch 10/30
12/12 [==============================] - 5s 379ms/step - loss: 0.5124 - accuracy: 0.8944 - val_loss: 0.5964 - val_accuracy: 0.8389
Epoch 11/30
12/12 [==============================] - 4s 346ms/step - loss: 0.4957 - accuracy: 0.8764 - val_loss: 0.5671 - val_accuracy: 0.8444
Epoch 12/30
12/12 [==============================] - 5s 449ms/step - loss: 0.4857 - accuracy: 0.8764 - val_loss: 0.5683 - val_accuracy: 0.8444
Epoch 13/30
12/12 [==============================] - 5s 379ms/step - loss: 0.4967 - accuracy: 0.8681 - val_loss: 0.5599 - val_accuracy: 0.8556
Epoch 14/30
12/12 [==============================] - 5s 373ms/step - loss: 0.4673 - accuracy: 0.9014 - val_loss: 0.5568 - val_accuracy: 0.8611
Epoch 15/30
12/12 [==============================] - 6s 464ms/step - loss: 0.4526 - accuracy: 0.9042 - val_loss: 0.5348 - val_accuracy: 0.8611
Epoch 16/30
12/12 [==============================] - 4s 347ms/step - loss: 0.4224 - accuracy: 0.9069 - val_loss: 0.5102 - val_accuracy: 0.8611
Epoch 17/30
12/12 [==============================] - 5s 409ms/step - loss: 0.4134 - accuracy: 0.9069 - val_loss: 0.5390 - val_accuracy: 0.8667
Epoch 18/30
12/12 [==============================] - 5s 394ms/step - loss: 0.3994 - accuracy: 0.9083 - val_loss: 0.4955 - val_accuracy: 0.8722
Epoch 19/30
12/12 [==============================] - 4s 345ms/step - loss: 0.3963 - accuracy: 0.9028 - val_loss: 0.4942 - val_accuracy: 0.8889
Epoch 20/30
12/12 [==============================] - 6s 467ms/step - loss: 0.3917 - accuracy: 0.9069 - val_loss: 0.4800 - val_accuracy: 0.8722
Epoch 21/30
12/12 [==============================] - 4s 363ms/step - loss: 0.3754 - accuracy: 0.9181 - val_loss: 0.4797 - val_accuracy: 0.8722
Epoch 22/30
12/12 [==============================] - 5s 437ms/step - loss: 0.3601 - accuracy: 0.9236 - val_loss: 0.4757 - val_accuracy: 0.8944
Epoch 23/30
12/12 [==============================] - 4s 368ms/step - loss: 0.3714 - accuracy: 0.9139 - val_loss: 0.4833 - val_accuracy: 0.8889
Epoch 24/30
12/12 [==============================] - 4s 346ms/step - loss: 0.3733 - accuracy: 0.9153 - val_loss: 0.4655 - val_accuracy: 0.8667
Epoch 25/30
12/12 [==============================] - 5s 385ms/step - loss: 0.3549 - accuracy: 0.9319 - val_loss: 0.4624 - val_accuracy: 0.8778
Epoch 26/30
12/12 [==============================] - 4s 341ms/step - loss: 0.3605 - accuracy: 0.9153 - val_loss: 0.4843 - val_accuracy: 0.8889
Epoch 27/30
12/12 [==============================] - 5s 430ms/step - loss: 0.3233 - accuracy: 0.9403 - val_loss: 0.4692 - val_accuracy: 0.8944
Epoch 28/30
12/12 [==============================] - 4s 348ms/step - loss: 0.3670 - accuracy: 0.9042 - val_loss: 0.4543 - val_accuracy: 0.9000
Epoch 29/30
12/12 [==============================] - 5s 416ms/step - loss: 0.3430 - accuracy: 0.9208 - val_loss: 0.4451 - val_accuracy: 0.8778
Epoch 30/30
12/12 [==============================] - 4s 366ms/step - loss: 0.3276 - accuracy: 0.9236 - val_loss: 0.4585 - val_accuracy: 0.8667
8/8 [==============================] - 1s 62ms/step
Epoch 1/30
12/12 [==============================] - 7s 401ms/step - loss: 5.5135 - accuracy: 0.4375 - val_loss: 4.4310 - val_accuracy: 0.6778
Epoch 2/30
12/12 [==============================] - 5s 373ms/step - loss: 3.7252 - accuracy: 0.6694 - val_loss: 3.0747 - val_accuracy: 0.7611
Epoch 3/30
12/12 [==============================] - 5s 436ms/step - loss: 2.6248 - accuracy: 0.7306 - val_loss: 2.1886 - val_accuracy: 0.7278
Epoch 4/30
12/12 [==============================] - 5s 390ms/step - loss: 1.8851 - accuracy: 0.8028 - val_loss: 1.6458 - val_accuracy: 0.7667
Epoch 5/30
12/12 [==============================] - 5s 409ms/step - loss: 1.4254 - accuracy: 0.8125 - val_loss: 1.3249 - val_accuracy: 0.7778
Epoch 6/30
12/12 [==============================] - 5s 374ms/step - loss: 1.1481 - accuracy: 0.8236 - val_loss: 1.1193 - val_accuracy: 0.8056
Epoch 7/30
12/12 [==============================] - 5s 452ms/step - loss: 0.9923 - accuracy: 0.8264 - val_loss: 0.9963 - val_accuracy: 0.8167
Epoch 8/30
12/12 [==============================] - 5s 392ms/step - loss: 0.8849 - accuracy: 0.8403 - val_loss: 0.8924 - val_accuracy: 0.8000
Epoch 9/30
12/12 [==============================] - 6s 504ms/step - loss: 0.8172 - accuracy: 0.8403 - val_loss: 0.8331 - val_accuracy: 0.8333
Epoch 10/30
12/12 [==============================] - 4s 356ms/step - loss: 0.7549 - accuracy: 0.8625 - val_loss: 0.8169 - val_accuracy: 0.8222
Epoch 11/30
12/12 [==============================] - 5s 395ms/step - loss: 0.7221 - accuracy: 0.8597 - val_loss: 0.7714 - val_accuracy: 0.8278
Epoch 12/30
12/12 [==============================] - 5s 412ms/step - loss: 0.6980 - accuracy: 0.8556 - val_loss: 0.7580 - val_accuracy: 0.8333
Epoch 13/30
12/12 [==============================] - 4s 370ms/step - loss: 0.6619 - accuracy: 0.8764 - val_loss: 0.7297 - val_accuracy: 0.8333
Epoch 14/30
12/12 [==============================] - 6s 464ms/step - loss: 0.6284 - accuracy: 0.8708 - val_loss: 0.7163 - val_accuracy: 0.8389
Epoch 15/30
12/12 [==============================] - 4s 361ms/step - loss: 0.6276 - accuracy: 0.8681 - val_loss: 0.6749 - val_accuracy: 0.8389
Epoch 16/30
12/12 [==============================] - 5s 422ms/step - loss: 0.5871 - accuracy: 0.8903 - val_loss: 0.6816 - val_accuracy: 0.8500
Epoch 17/30
12/12 [==============================] - 5s 446ms/step - loss: 0.6043 - accuracy: 0.8639 - val_loss: 0.6566 - val_accuracy: 0.8611
Epoch 18/30
12/12 [==============================] - 4s 371ms/step - loss: 0.6052 - accuracy: 0.8778 - val_loss: 0.6433 - val_accuracy: 0.8500
Epoch 19/30
12/12 [==============================] - 4s 360ms/step - loss: 0.5698 - accuracy: 0.8778 - val_loss: 0.6461 - val_accuracy: 0.8500
Epoch 20/30
12/12 [==============================] - 5s 414ms/step - loss: 0.5839 - accuracy: 0.8778 - val_loss: 0.6020 - val_accuracy: 0.8667
Epoch 21/30
12/12 [==============================] - 5s 414ms/step - loss: 0.5559 - accuracy: 0.8861 - val_loss: 0.6300 - val_accuracy: 0.8444
Epoch 22/30
12/12 [==============================] - 5s 398ms/step - loss: 0.5407 - accuracy: 0.8819 - val_loss: 0.5905 - val_accuracy: 0.8778
Epoch 23/30
12/12 [==============================] - 4s 346ms/step - loss: 0.5352 - accuracy: 0.8833 - val_loss: 0.5958 - val_accuracy: 0.8389
Epoch 24/30
12/12 [==============================] - 6s 503ms/step - loss: 0.5310 - accuracy: 0.8833 - val_loss: 0.5882 - val_accuracy: 0.8500
Epoch 25/30
12/12 [==============================] - 4s 366ms/step - loss: 0.5106 - accuracy: 0.8931 - val_loss: 0.6079 - val_accuracy: 0.8444
Epoch 26/30
12/12 [==============================] - 5s 370ms/step - loss: 0.5358 - accuracy: 0.8819 - val_loss: 0.5813 - val_accuracy: 0.8556
Epoch 27/30
12/12 [==============================] - 6s 449ms/step - loss: 0.5157 - accuracy: 0.8847 - val_loss: 0.5662 - val_accuracy: 0.8722
Epoch 28/30
12/12 [==============================] - 4s 369ms/step - loss: 0.5106 - accuracy: 0.8889 - val_loss: 0.5717 - val_accuracy: 0.8667
Epoch 29/30
12/12 [==============================] - 5s 388ms/step - loss: 0.5005 - accuracy: 0.8931 - val_loss: 0.5747 - val_accuracy: 0.8722
Epoch 30/30
12/12 [==============================] - 5s 365ms/step - loss: 0.5123 - accuracy: 0.8889 - val_loss: 0.5763 - val_accuracy: 0.8500
8/8 [==============================] - 1s 62ms/step
Epoch 1/30
12/12 [==============================] - 6s 401ms/step - loss: 42.9931 - accuracy: 0.3722 - val_loss: 32.5778 - val_accuracy: 0.4500
Epoch 2/30
12/12 [==============================] - 4s 347ms/step - loss: 26.0588 - accuracy: 0.5125 - val_loss: 19.1391 - val_accuracy: 0.6167
Epoch 3/30
12/12 [==============================] - 7s 548ms/step - loss: 15.0447 - accuracy: 0.5986 - val_loss: 10.8816 - val_accuracy: 0.7167
Epoch 4/30
12/12 [==============================] - 5s 374ms/step - loss: 8.6235 - accuracy: 0.6458 - val_loss: 6.1275 - val_accuracy: 0.7389
Epoch 5/30
12/12 [==============================] - 5s 377ms/step - loss: 4.8589 - accuracy: 0.6972 - val_loss: 3.5650 - val_accuracy: 0.7000
Epoch 6/30
12/12 [==============================] - 5s 389ms/step - loss: 2.8735 - accuracy: 0.7319 - val_loss: 2.2275 - val_accuracy: 0.7222
Epoch 7/30
12/12 [==============================] - 4s 371ms/step - loss: 1.8453 - accuracy: 0.7611 - val_loss: 1.5499 - val_accuracy: 0.7611
Epoch 8/30
12/12 [==============================] - 5s 469ms/step - loss: 1.3727 - accuracy: 0.7597 - val_loss: 1.2571 - val_accuracy: 0.7056
Epoch 9/30
12/12 [==============================] - 5s 374ms/step - loss: 1.1509 - accuracy: 0.7847 - val_loss: 1.0898 - val_accuracy: 0.7389
Epoch 10/30
12/12 [==============================] - 4s 381ms/step - loss: 1.0204 - accuracy: 0.7736 - val_loss: 1.0040 - val_accuracy: 0.7889
Epoch 11/30
12/12 [==============================] - 5s 458ms/step - loss: 0.9808 - accuracy: 0.7667 - val_loss: 0.9688 - val_accuracy: 0.7778
Epoch 12/30
12/12 [==============================] - 5s 385ms/step - loss: 0.9573 - accuracy: 0.7778 - val_loss: 1.0055 - val_accuracy: 0.7611
Epoch 13/30
12/12 [==============================] - 5s 410ms/step - loss: 0.9174 - accuracy: 0.7917 - val_loss: 0.9630 - val_accuracy: 0.7389
Epoch 14/30
12/12 [==============================] - 4s 358ms/step - loss: 0.8900 - accuracy: 0.8014 - val_loss: 0.9483 - val_accuracy: 0.7167
Epoch 15/30
12/12 [==============================] - 5s 442ms/step - loss: 0.8970 - accuracy: 0.7806 - val_loss: 0.8977 - val_accuracy: 0.8000
Epoch 16/30
12/12 [==============================] - 4s 357ms/step - loss: 0.8756 - accuracy: 0.7819 - val_loss: 0.9138 - val_accuracy: 0.7667
Epoch 17/30
12/12 [==============================] - 4s 346ms/step - loss: 0.8663 - accuracy: 0.8069 - val_loss: 0.9250 - val_accuracy: 0.7556
Epoch 18/30
12/12 [==============================] - 6s 472ms/step - loss: 0.8335 - accuracy: 0.8153 - val_loss: 0.8884 - val_accuracy: 0.7778
Epoch 19/30
12/12 [==============================] - 5s 374ms/step - loss: 0.8719 - accuracy: 0.7778 - val_loss: 0.8969 - val_accuracy: 0.7778
Epoch 20/30
12/12 [==============================] - 5s 427ms/step - loss: 0.8577 - accuracy: 0.7819 - val_loss: 0.8621 - val_accuracy: 0.7944
Epoch 21/30
12/12 [==============================] - 5s 355ms/step - loss: 0.8176 - accuracy: 0.8028 - val_loss: 0.8506 - val_accuracy: 0.7778
Epoch 22/30
12/12 [==============================] - 4s 354ms/step - loss: 0.8127 - accuracy: 0.8083 - val_loss: 0.8437 - val_accuracy: 0.7722
Epoch 23/30
12/12 [==============================] - 5s 453ms/step - loss: 0.8210 - accuracy: 0.8250 - val_loss: 0.8921 - val_accuracy: 0.7611
Epoch 24/30
12/12 [==============================] - 4s 372ms/step - loss: 0.8417 - accuracy: 0.7931 - val_loss: 0.8993 - val_accuracy: 0.7667
Epoch 25/30
12/12 [==============================] - 5s 373ms/step - loss: 0.7852 - accuracy: 0.8194 - val_loss: 0.8204 - val_accuracy: 0.8167
Epoch 26/30
12/12 [==============================] - 5s 399ms/step - loss: 0.8026 - accuracy: 0.8167 - val_loss: 0.8470 - val_accuracy: 0.7833
Epoch 27/30
12/12 [==============================] - 5s 381ms/step - loss: 0.8119 - accuracy: 0.8028 - val_loss: 0.8093 - val_accuracy: 0.8333
Epoch 28/30
12/12 [==============================] - 5s 453ms/step - loss: 0.7845 - accuracy: 0.8222 - val_loss: 0.8131 - val_accuracy: 0.8111
Epoch 29/30
12/12 [==============================] - 5s 373ms/step - loss: 0.7844 - accuracy: 0.8014 - val_loss: 0.8482 - val_accuracy: 0.7556
Epoch 30/30
12/12 [==============================] - 5s 373ms/step - loss: 0.7945 - accuracy: 0.8111 - val_loss: 0.7815 - val_accuracy: 0.8333
8/8 [==============================] - 1s 63ms/step
Epoch 1/30
12/12 [==============================] - 6s 393ms/step - loss: 1.8820 - accuracy: 0.3403 - val_loss: 1.4526 - val_accuracy: 0.7000
Epoch 2/30
12/12 [==============================] - 5s 384ms/step - loss: 1.3830 - accuracy: 0.5972 - val_loss: 1.2124 - val_accuracy: 0.6556
Epoch 3/30
12/12 [==============================] - 4s 359ms/step - loss: 1.0551 - accuracy: 0.7194 - val_loss: 1.0003 - val_accuracy: 0.7444
Epoch 4/30
12/12 [==============================] - 5s 454ms/step - loss: 0.9317 - accuracy: 0.7514 - val_loss: 0.9022 - val_accuracy: 0.7556
Epoch 5/30
12/12 [==============================] - 5s 387ms/step - loss: 0.8582 - accuracy: 0.7667 - val_loss: 0.8058 - val_accuracy: 0.7889
Epoch 6/30
12/12 [==============================] - 4s 358ms/step - loss: 0.7747 - accuracy: 0.8083 - val_loss: 0.7622 - val_accuracy: 0.7833
Epoch 7/30
12/12 [==============================] - 5s 374ms/step - loss: 0.6996 - accuracy: 0.8125 - val_loss: 0.7106 - val_accuracy: 0.8278
Epoch 8/30
12/12 [==============================] - 5s 409ms/step - loss: 0.6936 - accuracy: 0.8097 - val_loss: 0.6942 - val_accuracy: 0.8167
Epoch 9/30
12/12 [==============================] - 6s 497ms/step - loss: 0.6513 - accuracy: 0.8222 - val_loss: 0.6533 - val_accuracy: 0.8222
Epoch 10/30
12/12 [==============================] - 5s 373ms/step - loss: 0.5983 - accuracy: 0.8583 - val_loss: 0.6346 - val_accuracy: 0.8222
Epoch 11/30
12/12 [==============================] - 5s 387ms/step - loss: 0.5961 - accuracy: 0.8583 - val_loss: 0.6396 - val_accuracy: 0.8278
Epoch 12/30
12/12 [==============================] - 5s 379ms/step - loss: 0.5468 - accuracy: 0.8778 - val_loss: 0.5999 - val_accuracy: 0.8333
Epoch 13/30
12/12 [==============================] - 5s 439ms/step - loss: 0.5650 - accuracy: 0.8653 - val_loss: 0.5833 - val_accuracy: 0.8389
Epoch 14/30
12/12 [==============================] - 4s 358ms/step - loss: 0.5117 - accuracy: 0.8792 - val_loss: 0.5799 - val_accuracy: 0.8500
Epoch 15/30
12/12 [==============================] - 4s 352ms/step - loss: 0.5153 - accuracy: 0.8778 - val_loss: 0.5712 - val_accuracy: 0.8500
Epoch 16/30
12/12 [==============================] - 6s 476ms/step - loss: 0.4854 - accuracy: 0.8736 - val_loss: 0.5481 - val_accuracy: 0.8556
Epoch 17/30
12/12 [==============================] - 5s 379ms/step - loss: 0.4986 - accuracy: 0.8778 - val_loss: 0.5422 - val_accuracy: 0.8611
Epoch 18/30
12/12 [==============================] - 5s 429ms/step - loss: 0.4599 - accuracy: 0.8889 - val_loss: 0.5536 - val_accuracy: 0.8444
Epoch 19/30
12/12 [==============================] - 5s 379ms/step - loss: 0.4638 - accuracy: 0.8833 - val_loss: 0.5258 - val_accuracy: 0.8667
Epoch 20/30
12/12 [==============================] - 5s 461ms/step - loss: 0.4638 - accuracy: 0.8903 - val_loss: 0.5449 - val_accuracy: 0.8556
Epoch 21/30
12/12 [==============================] - 5s 406ms/step - loss: 0.4571 - accuracy: 0.8917 - val_loss: 0.5024 - val_accuracy: 0.8722
Epoch 22/30
12/12 [==============================] - 6s 475ms/step - loss: 0.4451 - accuracy: 0.8847 - val_loss: 0.5104 - val_accuracy: 0.8611
Epoch 23/30
12/12 [==============================] - 4s 360ms/step - loss: 0.4564 - accuracy: 0.8806 - val_loss: 0.5193 - val_accuracy: 0.8667
Epoch 24/30
12/12 [==============================] - 5s 376ms/step - loss: 0.4362 - accuracy: 0.9069 - val_loss: 0.4922 - val_accuracy: 0.8833
Epoch 25/30
12/12 [==============================] - 6s 453ms/step - loss: 0.4309 - accuracy: 0.8917 - val_loss: 0.5039 - val_accuracy: 0.8611
Epoch 26/30
12/12 [==============================] - 5s 420ms/step - loss: 0.4515 - accuracy: 0.8778 - val_loss: 0.4755 - val_accuracy: 0.8722
Epoch 27/30
12/12 [==============================] - 5s 367ms/step - loss: 0.4057 - accuracy: 0.9028 - val_loss: 0.4941 - val_accuracy: 0.8944
Epoch 28/30
12/12 [==============================] - 4s 347ms/step - loss: 0.4015 - accuracy: 0.9069 - val_loss: 0.4825 - val_accuracy: 0.8722
Epoch 29/30
12/12 [==============================] - 6s 474ms/step - loss: 0.3830 - accuracy: 0.9056 - val_loss: 0.4807 - val_accuracy: 0.8833
8/8 [==============================] - 1s 63ms/step
Epoch 1/30
12/12 [==============================] - 6s 384ms/step - loss: 5.7380 - accuracy: 0.3694 - val_loss: 4.5014 - val_accuracy: 0.6222
Epoch 2/30
12/12 [==============================] - 4s 358ms/step - loss: 3.9411 - accuracy: 0.5611 - val_loss: 3.1938 - val_accuracy: 0.6389
Epoch 3/30
12/12 [==============================] - 5s 423ms/step - loss: 2.7834 - accuracy: 0.6667 - val_loss: 2.3123 - val_accuracy: 0.7556
Epoch 4/30
12/12 [==============================] - 5s 370ms/step - loss: 2.0424 - accuracy: 0.7639 - val_loss: 1.7815 - val_accuracy: 0.7667
Epoch 5/30
12/12 [==============================] - 4s 357ms/step - loss: 1.6264 - accuracy: 0.7500 - val_loss: 1.4807 - val_accuracy: 0.7611
Epoch 6/30
12/12 [==============================] - 5s 460ms/step - loss: 1.3604 - accuracy: 0.7542 - val_loss: 1.2458 - val_accuracy: 0.7778
Epoch 7/30
12/12 [==============================] - 5s 376ms/step - loss: 1.1343 - accuracy: 0.8181 - val_loss: 1.0960 - val_accuracy: 0.7944
Epoch 8/30
12/12 [==============================] - 5s 392ms/step - loss: 1.0617 - accuracy: 0.7986 - val_loss: 1.0303 - val_accuracy: 0.7889
Epoch 9/30
12/12 [==============================] - 5s 397ms/step - loss: 0.9682 - accuracy: 0.8181 - val_loss: 0.9710 - val_accuracy: 0.7944
Epoch 10/30
12/12 [==============================] - 5s 383ms/step - loss: 0.9137 - accuracy: 0.8125 - val_loss: 0.8994 - val_accuracy: 0.8167
Epoch 11/30
12/12 [==============================] - 5s 478ms/step - loss: 0.8597 - accuracy: 0.8139 - val_loss: 0.8540 - val_accuracy: 0.8278
Epoch 12/30
12/12 [==============================] - 5s 377ms/step - loss: 0.8184 - accuracy: 0.8333 - val_loss: 0.8356 - val_accuracy: 0.8222
Epoch 13/30
12/12 [==============================] - 4s 359ms/step - loss: 0.7922 - accuracy: 0.8347 - val_loss: 0.8013 - val_accuracy: 0.8278
Epoch 14/30
12/12 [==============================] - 6s 457ms/step - loss: 0.7642 - accuracy: 0.8319 - val_loss: 0.7739 - val_accuracy: 0.8222
Epoch 15/30
12/12 [==============================] - 5s 372ms/step - loss: 0.7483 - accuracy: 0.8500 - val_loss: 0.7819 - val_accuracy: 0.8167
Epoch 16/30
12/12 [==============================] - 5s 390ms/step - loss: 0.7315 - accuracy: 0.8306 - val_loss: 0.7364 - val_accuracy: 0.8500
Epoch 17/30
12/12 [==============================] - 5s 378ms/step - loss: 0.6920 - accuracy: 0.8444 - val_loss: 0.7188 - val_accuracy: 0.8222
Epoch 18/30
12/12 [==============================] - 4s 382ms/step - loss: 0.7066 - accuracy: 0.8319 - val_loss: 0.7364 - val_accuracy: 0.8111
Epoch 19/30
12/12 [==============================] - 5s 457ms/step - loss: 0.6526 - accuracy: 0.8681 - val_loss: 0.6837 - val_accuracy: 0.8500
Epoch 20/30
12/12 [==============================] - 4s 351ms/step - loss: 0.6636 - accuracy: 0.8569 - val_loss: 0.6951 - val_accuracy: 0.8500
Epoch 21/30
12/12 [==============================] - 5s 399ms/step - loss: 0.6375 - accuracy: 0.8681 - val_loss: 0.6837 - val_accuracy: 0.8556
Epoch 22/30
12/12 [==============================] - 5s 370ms/step - loss: 0.6284 - accuracy: 0.8472 - val_loss: 0.6615 - val_accuracy: 0.8333
Epoch 23/30
12/12 [==============================] - 4s 360ms/step - loss: 0.6208 - accuracy: 0.8722 - val_loss: 0.6578 - val_accuracy: 0.8444
Epoch 24/30
12/12 [==============================] - 5s 458ms/step - loss: 0.6177 - accuracy: 0.8653 - val_loss: 0.6384 - val_accuracy: 0.8444
Epoch 25/30
12/12 [==============================] - 5s 385ms/step - loss: 0.6147 - accuracy: 0.8736 - val_loss: 0.6377 - val_accuracy: 0.8389
Epoch 26/30
12/12 [==============================] - 5s 404ms/step - loss: 0.5930 - accuracy: 0.8722 - val_loss: 0.6288 - val_accuracy: 0.8556
Epoch 27/30
12/12 [==============================] - 5s 394ms/step - loss: 0.6128 - accuracy: 0.8542 - val_loss: 0.6418 - val_accuracy: 0.8333
Epoch 28/30
12/12 [==============================] - 5s 381ms/step - loss: 0.5916 - accuracy: 0.8597 - val_loss: 0.6282 - val_accuracy: 0.8611
Epoch 29/30
12/12 [==============================] - 5s 452ms/step - loss: 0.5814 - accuracy: 0.8653 - val_loss: 0.6145 - val_accuracy: 0.8444
Epoch 30/30
12/12 [==============================] - 4s 371ms/step - loss: 0.5894 - accuracy: 0.8667 - val_loss: 0.6307 - val_accuracy: 0.8500
8/8 [==============================] - 1s 63ms/step
Epoch 1/30
12/12 [==============================] - 7s 496ms/step - loss: 42.9927 - accuracy: 0.3222 - val_loss: 32.7232 - val_accuracy: 0.3889
Epoch 2/30
12/12 [==============================] - 4s 358ms/step - loss: 25.8089 - accuracy: 0.4528 - val_loss: 19.3384 - val_accuracy: 0.6611
Epoch 3/30
12/12 [==============================] - 6s 445ms/step - loss: 15.0504 - accuracy: 0.5597 - val_loss: 11.1095 - val_accuracy: 0.6278
Epoch 4/30
12/12 [==============================] - 5s 413ms/step - loss: 8.7159 - accuracy: 0.6306 - val_loss: 6.3575 - val_accuracy: 0.6333
Epoch 5/30
12/12 [==============================] - 4s 358ms/step - loss: 5.0062 - accuracy: 0.6722 - val_loss: 3.7336 - val_accuracy: 0.7056
Epoch 6/30
12/12 [==============================] - 4s 347ms/step - loss: 3.0091 - accuracy: 0.7056 - val_loss: 2.3704 - val_accuracy: 0.6944
Epoch 7/30
12/12 [==============================] - 6s 485ms/step - loss: 2.0155 - accuracy: 0.7194 - val_loss: 1.6539 - val_accuracy: 0.7667
Epoch 8/30
12/12 [==============================] - 5s 389ms/step - loss: 1.4956 - accuracy: 0.7403 - val_loss: 1.3304 - val_accuracy: 0.7611
Epoch 9/30
12/12 [==============================] - 5s 389ms/step - loss: 1.2401 - accuracy: 0.7472 - val_loss: 1.1785 - val_accuracy: 0.7333
Epoch 10/30
12/12 [==============================] - 4s 361ms/step - loss: 1.1358 - accuracy: 0.7625 - val_loss: 1.0951 - val_accuracy: 0.7444
Epoch 11/30
12/12 [==============================] - 5s 456ms/step - loss: 1.0814 - accuracy: 0.7347 - val_loss: 1.0678 - val_accuracy: 0.7389
Epoch 12/30
12/12 [==============================] - 5s 374ms/step - loss: 1.0360 - accuracy: 0.7528 - val_loss: 1.0065 - val_accuracy: 0.8000
Epoch 13/30
12/12 [==============================] - 6s 470ms/step - loss: 1.0256 - accuracy: 0.7319 - val_loss: 0.9861 - val_accuracy: 0.7944
Epoch 14/30
12/12 [==============================] - 5s 379ms/step - loss: 0.9789 - accuracy: 0.7569 - val_loss: 0.9772 - val_accuracy: 0.7389
Epoch 15/30
12/12 [==============================] - 5s 420ms/step - loss: 0.9744 - accuracy: 0.7653 - val_loss: 0.9654 - val_accuracy: 0.7944
Epoch 16/30
12/12 [==============================] - 4s 354ms/step - loss: 0.9798 - accuracy: 0.7500 - val_loss: 0.9551 - val_accuracy: 0.7778
Epoch 17/30
12/12 [==============================] - 5s 374ms/step - loss: 0.9409 - accuracy: 0.7792 - val_loss: 0.9324 - val_accuracy: 0.8000
Epoch 18/30
12/12 [==============================] - 6s 468ms/step - loss: 0.9360 - accuracy: 0.7764 - val_loss: 0.9144 - val_accuracy: 0.8056
Epoch 19/30
12/12 [==============================] - 5s 408ms/step - loss: 0.9114 - accuracy: 0.7847 - val_loss: 0.9006 - val_accuracy: 0.7944
Epoch 20/30
12/12 [==============================] - 5s 360ms/step - loss: 0.8908 - accuracy: 0.8000 - val_loss: 0.9086 - val_accuracy: 0.7833
Epoch 21/30
12/12 [==============================] - 4s 355ms/step - loss: 0.9088 - accuracy: 0.7556 - val_loss: 0.8882 - val_accuracy: 0.8056
Epoch 22/30
12/12 [==============================] - 5s 441ms/step - loss: 0.9140 - accuracy: 0.7583 - val_loss: 0.8946 - val_accuracy: 0.7722
Epoch 23/30
12/12 [==============================] - 4s 351ms/step - loss: 0.9255 - accuracy: 0.7611 - val_loss: 0.8956 - val_accuracy: 0.7833
Epoch 24/30
12/12 [==============================] - 5s 376ms/step - loss: 0.8852 - accuracy: 0.7764 - val_loss: 0.8894 - val_accuracy: 0.7778
8/8 [==============================] - 1s 63ms/step
Epoch 1/30
6/6 [==============================] - 6s 773ms/step - loss: 1.8618 - accuracy: 0.3556 - val_loss: 1.6586 - val_accuracy: 0.4889
Epoch 2/30
6/6 [==============================] - 4s 707ms/step - loss: 1.4792 - accuracy: 0.6000 - val_loss: 1.3689 - val_accuracy: 0.6944
Epoch 3/30
6/6 [==============================] - 5s 870ms/step - loss: 1.2422 - accuracy: 0.7097 - val_loss: 1.2112 - val_accuracy: 0.6444
Epoch 4/30
6/6 [==============================] - 5s 740ms/step - loss: 1.0863 - accuracy: 0.7264 - val_loss: 1.0503 - val_accuracy: 0.7556
Epoch 5/30
6/6 [==============================] - 5s 874ms/step - loss: 0.9327 - accuracy: 0.7806 - val_loss: 0.9417 - val_accuracy: 0.7389
Epoch 6/30
6/6 [==============================] - 5s 749ms/step - loss: 0.8432 - accuracy: 0.8083 - val_loss: 0.8615 - val_accuracy: 0.7611
Epoch 7/30
6/6 [==============================] - 6s 895ms/step - loss: 0.7595 - accuracy: 0.8292 - val_loss: 0.7851 - val_accuracy: 0.7944
Epoch 8/30
6/6 [==============================] - 4s 775ms/step - loss: 0.7284 - accuracy: 0.8375 - val_loss: 0.7498 - val_accuracy: 0.7944
Epoch 9/30
6/6 [==============================] - 5s 863ms/step - loss: 0.6458 - accuracy: 0.8444 - val_loss: 0.7054 - val_accuracy: 0.8167
Epoch 10/30
6/6 [==============================] - 5s 747ms/step - loss: 0.6095 - accuracy: 0.8611 - val_loss: 0.6677 - val_accuracy: 0.8278
Epoch 11/30
6/6 [==============================] - 6s 861ms/step - loss: 0.5556 - accuracy: 0.8736 - val_loss: 0.6700 - val_accuracy: 0.8056
Epoch 12/30
6/6 [==============================] - 4s 701ms/step - loss: 0.5622 - accuracy: 0.8625 - val_loss: 0.6202 - val_accuracy: 0.8333
Epoch 13/30
6/6 [==============================] - 5s 916ms/step - loss: 0.5038 - accuracy: 0.8833 - val_loss: 0.6126 - val_accuracy: 0.8333
Epoch 14/30
6/6 [==============================] - 5s 757ms/step - loss: 0.5134 - accuracy: 0.8861 - val_loss: 0.5845 - val_accuracy: 0.8278
Epoch 15/30
6/6 [==============================] - 6s 922ms/step - loss: 0.5012 - accuracy: 0.8847 - val_loss: 0.5637 - val_accuracy: 0.8444
Epoch 16/30
6/6 [==============================] - 5s 754ms/step - loss: 0.4748 - accuracy: 0.9028 - val_loss: 0.5543 - val_accuracy: 0.8444
Epoch 17/30
6/6 [==============================] - 5s 697ms/step - loss: 0.4529 - accuracy: 0.9069 - val_loss: 0.5453 - val_accuracy: 0.8500
Epoch 18/30
6/6 [==============================] - 4s 693ms/step - loss: 0.4496 - accuracy: 0.8972 - val_loss: 0.5330 - val_accuracy: 0.8611
Epoch 19/30
6/6 [==============================] - 5s 910ms/step - loss: 0.4172 - accuracy: 0.9167 - val_loss: 0.5220 - val_accuracy: 0.8722
Epoch 20/30
6/6 [==============================] - 4s 684ms/step - loss: 0.4183 - accuracy: 0.9167 - val_loss: 0.5213 - val_accuracy: 0.8667
Epoch 21/30
6/6 [==============================] - 5s 752ms/step - loss: 0.4238 - accuracy: 0.9028 - val_loss: 0.5070 - val_accuracy: 0.8778
Epoch 22/30
6/6 [==============================] - 4s 682ms/step - loss: 0.4042 - accuracy: 0.9083 - val_loss: 0.5126 - val_accuracy: 0.8667
Epoch 23/30
6/6 [==============================] - 5s 900ms/step - loss: 0.3840 - accuracy: 0.9208 - val_loss: 0.4920 - val_accuracy: 0.8667
Epoch 24/30
6/6 [==============================] - 5s 738ms/step - loss: 0.3806 - accuracy: 0.9208 - val_loss: 0.5006 - val_accuracy: 0.8722
Epoch 25/30
6/6 [==============================] - 5s 783ms/step - loss: 0.3646 - accuracy: 0.9319 - val_loss: 0.4805 - val_accuracy: 0.8833
Epoch 26/30
6/6 [==============================] - 4s 698ms/step - loss: 0.3706 - accuracy: 0.9264 - val_loss: 0.4952 - val_accuracy: 0.8778
Epoch 27/30
6/6 [==============================] - 6s 974ms/step - loss: 0.3680 - accuracy: 0.9153 - val_loss: 0.4700 - val_accuracy: 0.8722
Epoch 28/30
6/6 [==============================] - 5s 765ms/step - loss: 0.3511 - accuracy: 0.9361 - val_loss: 0.4685 - val_accuracy: 0.8778
Epoch 29/30
6/6 [==============================] - 4s 700ms/step - loss: 0.3420 - accuracy: 0.9292 - val_loss: 0.4687 - val_accuracy: 0.8778
Epoch 30/30
6/6 [==============================] - 5s 898ms/step - loss: 0.3615 - accuracy: 0.9236 - val_loss: 0.4581 - val_accuracy: 0.8778
8/8 [==============================] - 1s 61ms/step
Epoch 1/30
6/6 [==============================] - 6s 803ms/step - loss: 5.9895 - accuracy: 0.4111 - val_loss: 5.2994 - val_accuracy: 0.5778
Epoch 2/30
6/6 [==============================] - 5s 800ms/step - loss: 4.8522 - accuracy: 0.5931 - val_loss: 4.3504 - val_accuracy: 0.6389
Epoch 3/30
6/6 [==============================] - 4s 746ms/step - loss: 3.9545 - accuracy: 0.7000 - val_loss: 3.5787 - val_accuracy: 0.6944
Epoch 4/30
6/6 [==============================] - 6s 963ms/step - loss: 3.2458 - accuracy: 0.7500 - val_loss: 2.9391 - val_accuracy: 0.7333
Epoch 5/30
6/6 [==============================] - 5s 750ms/step - loss: 2.6911 - accuracy: 0.7681 - val_loss: 2.4566 - val_accuracy: 0.7389
Epoch 6/30
6/6 [==============================] - 5s 789ms/step - loss: 2.2407 - accuracy: 0.7986 - val_loss: 2.0467 - val_accuracy: 0.7833
Epoch 7/30
6/6 [==============================] - 5s 898ms/step - loss: 1.8711 - accuracy: 0.8014 - val_loss: 1.7705 - val_accuracy: 0.7778
Epoch 8/30
6/6 [==============================] - 5s 815ms/step - loss: 1.5710 - accuracy: 0.8361 - val_loss: 1.5111 - val_accuracy: 0.8056
Epoch 9/30
6/6 [==============================] - 4s 769ms/step - loss: 1.3601 - accuracy: 0.8431 - val_loss: 1.3374 - val_accuracy: 0.8056
Epoch 10/30
6/6 [==============================] - 5s 770ms/step - loss: 1.1991 - accuracy: 0.8403 - val_loss: 1.1793 - val_accuracy: 0.8167
Epoch 11/30
6/6 [==============================] - 5s 814ms/step - loss: 1.0809 - accuracy: 0.8417 - val_loss: 1.0727 - val_accuracy: 0.8222
Epoch 12/30
6/6 [==============================] - 5s 934ms/step - loss: 0.9611 - accuracy: 0.8556 - val_loss: 0.9914 - val_accuracy: 0.8222
Epoch 13/30
6/6 [==============================] - 4s 677ms/step - loss: 0.8942 - accuracy: 0.8667 - val_loss: 0.9290 - val_accuracy: 0.8333
Epoch 14/30
6/6 [==============================] - 5s 754ms/step - loss: 0.8355 - accuracy: 0.8653 - val_loss: 0.8734 - val_accuracy: 0.8222
Epoch 15/30
6/6 [==============================] - 5s 710ms/step - loss: 0.7896 - accuracy: 0.8611 - val_loss: 0.8436 - val_accuracy: 0.8167
Epoch 16/30
6/6 [==============================] - 5s 752ms/step - loss: 0.7414 - accuracy: 0.8597 - val_loss: 0.7830 - val_accuracy: 0.8389
Epoch 17/30
6/6 [==============================] - 5s 886ms/step - loss: 0.7155 - accuracy: 0.8736 - val_loss: 0.7529 - val_accuracy: 0.8500
Epoch 18/30
6/6 [==============================] - 4s 705ms/step - loss: 0.6684 - accuracy: 0.8972 - val_loss: 0.7387 - val_accuracy: 0.8444
Epoch 19/30
6/6 [==============================] - 5s 772ms/step - loss: 0.6329 - accuracy: 0.9000 - val_loss: 0.7030 - val_accuracy: 0.8556
Epoch 20/30
6/6 [==============================] - 4s 714ms/step - loss: 0.6218 - accuracy: 0.8889 - val_loss: 0.6880 - val_accuracy: 0.8500
Epoch 21/30
6/6 [==============================] - 5s 884ms/step - loss: 0.6179 - accuracy: 0.8708 - val_loss: 0.6929 - val_accuracy: 0.8500
Epoch 22/30
6/6 [==============================] - 5s 733ms/step - loss: 0.5890 - accuracy: 0.8958 - val_loss: 0.6573 - val_accuracy: 0.8556
Epoch 23/30
6/6 [==============================] - 5s 677ms/step - loss: 0.5912 - accuracy: 0.8750 - val_loss: 0.6641 - val_accuracy: 0.8556
Epoch 24/30
6/6 [==============================] - 4s 683ms/step - loss: 0.5753 - accuracy: 0.8889 - val_loss: 0.6388 - val_accuracy: 0.8444
Epoch 25/30
6/6 [==============================] - 5s 926ms/step - loss: 0.5686 - accuracy: 0.8847 - val_loss: 0.6292 - val_accuracy: 0.8556
Epoch 26/30
6/6 [==============================] - 5s 743ms/step - loss: 0.5496 - accuracy: 0.8903 - val_loss: 0.6280 - val_accuracy: 0.8556
Epoch 27/30
6/6 [==============================] - 5s 754ms/step - loss: 0.5485 - accuracy: 0.8861 - val_loss: 0.6073 - val_accuracy: 0.8500
Epoch 28/30
6/6 [==============================] - 4s 699ms/step - loss: 0.5343 - accuracy: 0.8861 - val_loss: 0.6387 - val_accuracy: 0.8556
Epoch 29/30
6/6 [==============================] - 5s 824ms/step - loss: 0.5285 - accuracy: 0.8806 - val_loss: 0.5909 - val_accuracy: 0.8722
Epoch 30/30
6/6 [==============================] - 4s 695ms/step - loss: 0.5076 - accuracy: 0.9097 - val_loss: 0.6004 - val_accuracy: 0.8611
8/8 [==============================] - 1s 61ms/step
Epoch 1/30
6/6 [==============================] - 6s 807ms/step - loss: 48.2372 - accuracy: 0.3125 - val_loss: 41.6457 - val_accuracy: 0.4833
Epoch 2/30
6/6 [==============================] - 4s 691ms/step - loss: 37.5842 - accuracy: 0.4597 - val_loss: 32.3970 - val_accuracy: 0.5444
Epoch 3/30
6/6 [==============================] - 5s 740ms/step - loss: 29.2860 - accuracy: 0.5167 - val_loss: 24.9232 - val_accuracy: 0.5722
Epoch 4/30
6/6 [==============================] - 6s 932ms/step - loss: 22.3241 - accuracy: 0.6181 - val_loss: 18.9507 - val_accuracy: 0.5944
Epoch 5/30
6/6 [==============================] - 5s 800ms/step - loss: 16.9195 - accuracy: 0.6486 - val_loss: 14.2737 - val_accuracy: 0.6444
Epoch 6/30
6/6 [==============================] - 5s 770ms/step - loss: 12.7276 - accuracy: 0.6972 - val_loss: 10.6818 - val_accuracy: 0.6667
Epoch 7/30
6/6 [==============================] - 4s 693ms/step - loss: 9.5008 - accuracy: 0.7111 - val_loss: 7.9635 - val_accuracy: 0.6833
Epoch 8/30
6/6 [==============================] - 5s 918ms/step - loss: 7.0680 - accuracy: 0.7389 - val_loss: 5.9395 - val_accuracy: 0.7167
Epoch 9/30
6/6 [==============================] - 5s 757ms/step - loss: 5.2665 - accuracy: 0.7194 - val_loss: 4.4600 - val_accuracy: 0.7222
Epoch 10/30
6/6 [==============================] - 5s 758ms/step - loss: 3.9199 - accuracy: 0.7597 - val_loss: 3.3756 - val_accuracy: 0.7333
Epoch 11/30
6/6 [==============================] - 6s 949ms/step - loss: 2.9973 - accuracy: 0.8014 - val_loss: 2.6052 - val_accuracy: 0.7389
Epoch 12/30
6/6 [==============================] - 5s 838ms/step - loss: 2.3341 - accuracy: 0.7708 - val_loss: 2.0636 - val_accuracy: 0.7333
Epoch 13/30
6/6 [==============================] - 4s 700ms/step - loss: 1.8618 - accuracy: 0.7847 - val_loss: 1.6922 - val_accuracy: 0.7556
Epoch 14/30
6/6 [==============================] - 5s 818ms/step - loss: 1.5239 - accuracy: 0.7806 - val_loss: 1.4128 - val_accuracy: 0.7889
Epoch 15/30
6/6 [==============================] - 5s 718ms/step - loss: 1.3118 - accuracy: 0.7972 - val_loss: 1.2522 - val_accuracy: 0.7556
Epoch 16/30
6/6 [==============================] - 4s 684ms/step - loss: 1.1342 - accuracy: 0.7972 - val_loss: 1.1152 - val_accuracy: 0.7667
Epoch 17/30
6/6 [==============================] - 5s 912ms/step - loss: 1.0431 - accuracy: 0.8139 - val_loss: 1.0399 - val_accuracy: 0.7833
Epoch 18/30
6/6 [==============================] - 4s 713ms/step - loss: 0.9638 - accuracy: 0.8236 - val_loss: 0.9816 - val_accuracy: 0.7667
Epoch 19/30
6/6 [==============================] - 4s 693ms/step - loss: 0.9323 - accuracy: 0.7847 - val_loss: 0.9376 - val_accuracy: 0.7833
Epoch 20/30
6/6 [==============================] - 5s 688ms/step - loss: 0.8924 - accuracy: 0.8125 - val_loss: 0.9260 - val_accuracy: 0.7667
Epoch 21/30
6/6 [==============================] - 4s 707ms/step - loss: 0.8662 - accuracy: 0.8069 - val_loss: 0.8909 - val_accuracy: 0.8000
Epoch 22/30
6/6 [==============================] - 5s 910ms/step - loss: 0.8377 - accuracy: 0.8208 - val_loss: 0.8865 - val_accuracy: 0.7833
Epoch 23/30
6/6 [==============================] - 5s 801ms/step - loss: 0.8288 - accuracy: 0.8306 - val_loss: 0.8681 - val_accuracy: 0.7889
Epoch 24/30
6/6 [==============================] - 5s 853ms/step - loss: 0.7980 - accuracy: 0.8278 - val_loss: 0.8531 - val_accuracy: 0.7944
Epoch 25/30
6/6 [==============================] - 5s 807ms/step - loss: 0.7947 - accuracy: 0.8208 - val_loss: 0.8575 - val_accuracy: 0.7889
Epoch 26/30
6/6 [==============================] - 5s 775ms/step - loss: 0.7908 - accuracy: 0.8306 - val_loss: 0.8337 - val_accuracy: 0.8111
Epoch 27/30
6/6 [==============================] - 5s 805ms/step - loss: 0.7649 - accuracy: 0.8417 - val_loss: 0.8326 - val_accuracy: 0.7778
Epoch 28/30
6/6 [==============================] - 5s 926ms/step - loss: 0.7746 - accuracy: 0.8250 - val_loss: 0.8359 - val_accuracy: 0.7944
Epoch 29/30
6/6 [==============================] - 4s 705ms/step - loss: 0.7751 - accuracy: 0.8403 - val_loss: 0.8501 - val_accuracy: 0.7556
Epoch 30/30
6/6 [==============================] - 5s 771ms/step - loss: 0.7689 - accuracy: 0.8264 - val_loss: 0.8141 - val_accuracy: 0.8056
8/8 [==============================] - 1s 61ms/step
Epoch 1/30
6/6 [==============================] - 6s 789ms/step - loss: 1.9185 - accuracy: 0.3222 - val_loss: 1.6255 - val_accuracy: 0.4611
Epoch 2/30
6/6 [==============================] - 5s 816ms/step - loss: 1.5323 - accuracy: 0.5042 - val_loss: 1.3486 - val_accuracy: 0.7000
Epoch 3/30
6/6 [==============================] - 5s 697ms/step - loss: 1.2694 - accuracy: 0.6792 - val_loss: 1.1875 - val_accuracy: 0.6722
Epoch 4/30
6/6 [==============================] - 4s 696ms/step - loss: 1.1105 - accuracy: 0.7153 - val_loss: 1.0535 - val_accuracy: 0.7278
Epoch 5/30
6/6 [==============================] - 6s 1s/step - loss: 0.9465 - accuracy: 0.7708 - val_loss: 0.9607 - val_accuracy: 0.7667
Epoch 6/30
6/6 [==============================] - 4s 686ms/step - loss: 0.8781 - accuracy: 0.7889 - val_loss: 0.8770 - val_accuracy: 0.7611
Epoch 7/30
6/6 [==============================] - 5s 820ms/step - loss: 0.7807 - accuracy: 0.8139 - val_loss: 0.8104 - val_accuracy: 0.7833
Epoch 8/30
6/6 [==============================] - 5s 742ms/step - loss: 0.7283 - accuracy: 0.8278 - val_loss: 0.7702 - val_accuracy: 0.8111
Epoch 9/30
6/6 [==============================] - 4s 699ms/step - loss: 0.6948 - accuracy: 0.8444 - val_loss: 0.7299 - val_accuracy: 0.7833
Epoch 10/30
6/6 [==============================] - 6s 969ms/step - loss: 0.6327 - accuracy: 0.8681 - val_loss: 0.7015 - val_accuracy: 0.8167
Epoch 11/30
6/6 [==============================] - 4s 711ms/step - loss: 0.6149 - accuracy: 0.8431 - val_loss: 0.6632 - val_accuracy: 0.8222
Epoch 12/30
6/6 [==============================] - 5s 791ms/step - loss: 0.5795 - accuracy: 0.8792 - val_loss: 0.6416 - val_accuracy: 0.8222
Epoch 13/30
6/6 [==============================] - 5s 794ms/step - loss: 0.5709 - accuracy: 0.8639 - val_loss: 0.6271 - val_accuracy: 0.8222
Epoch 14/30
6/6 [==============================] - 4s 715ms/step - loss: 0.5475 - accuracy: 0.8694 - val_loss: 0.6029 - val_accuracy: 0.8278
Epoch 15/30
6/6 [==============================] - 6s 1s/step - loss: 0.5212 - accuracy: 0.8819 - val_loss: 0.5962 - val_accuracy: 0.8444
Epoch 16/30
6/6 [==============================] - 4s 702ms/step - loss: 0.5050 - accuracy: 0.8903 - val_loss: 0.5852 - val_accuracy: 0.8333
Epoch 17/30
6/6 [==============================] - 5s 808ms/step - loss: 0.4918 - accuracy: 0.8778 - val_loss: 0.5662 - val_accuracy: 0.8556
Epoch 18/30
6/6 [==============================] - 5s 697ms/step - loss: 0.4798 - accuracy: 0.8931 - val_loss: 0.5775 - val_accuracy: 0.8389
Epoch 19/30
6/6 [==============================] - 4s 717ms/step - loss: 0.4716 - accuracy: 0.8847 - val_loss: 0.5386 - val_accuracy: 0.8556
Epoch 20/30
6/6 [==============================] - 6s 982ms/step - loss: 0.4517 - accuracy: 0.9083 - val_loss: 0.5524 - val_accuracy: 0.8722
Epoch 21/30
6/6 [==============================] - 4s 702ms/step - loss: 0.4357 - accuracy: 0.9056 - val_loss: 0.5251 - val_accuracy: 0.8778
Epoch 22/30
6/6 [==============================] - 4s 730ms/step - loss: 0.4331 - accuracy: 0.9056 - val_loss: 0.5246 - val_accuracy: 0.8722
Epoch 23/30
6/6 [==============================] - 5s 827ms/step - loss: 0.4129 - accuracy: 0.8986 - val_loss: 0.5107 - val_accuracy: 0.8611
Epoch 24/30
6/6 [==============================] - 4s 736ms/step - loss: 0.4107 - accuracy: 0.8958 - val_loss: 0.5044 - val_accuracy: 0.8667
Epoch 25/30
6/6 [==============================] - 6s 953ms/step - loss: 0.3979 - accuracy: 0.9139 - val_loss: 0.4962 - val_accuracy: 0.8667
Epoch 26/30
6/6 [==============================] - 4s 752ms/step - loss: 0.3735 - accuracy: 0.9236 - val_loss: 0.4899 - val_accuracy: 0.8778
Epoch 27/30
6/6 [==============================] - 5s 762ms/step - loss: 0.3889 - accuracy: 0.9083 - val_loss: 0.4812 - val_accuracy: 0.8778
Epoch 28/30
6/6 [==============================] - 5s 775ms/step - loss: 0.3843 - accuracy: 0.9139 - val_loss: 0.4817 - val_accuracy: 0.8778
Epoch 29/30
6/6 [==============================] - 4s 696ms/step - loss: 0.3626 - accuracy: 0.9250 - val_loss: 0.4821 - val_accuracy: 0.8833
Epoch 30/30
6/6 [==============================] - 5s 877ms/step - loss: 0.3779 - accuracy: 0.9111 - val_loss: 0.4733 - val_accuracy: 0.8778
8/8 [==============================] - 1s 61ms/step
Epoch 1/30
6/6 [==============================] - 6s 750ms/step - loss: 6.2706 - accuracy: 0.2694 - val_loss: 5.4098 - val_accuracy: 0.4833
Epoch 2/30
6/6 [==============================] - 5s 890ms/step - loss: 5.0000 - accuracy: 0.5194 - val_loss: 4.4183 - val_accuracy: 0.7222
Epoch 3/30
6/6 [==============================] - 4s 705ms/step - loss: 4.1052 - accuracy: 0.6444 - val_loss: 3.6742 - val_accuracy: 0.6333
Epoch 4/30
6/6 [==============================] - 6s 953ms/step - loss: 3.3682 - accuracy: 0.6903 - val_loss: 3.0222 - val_accuracy: 0.7278
Epoch 5/30
6/6 [==============================] - 5s 951ms/step - loss: 2.7852 - accuracy: 0.7583 - val_loss: 2.5297 - val_accuracy: 0.7444
Epoch 6/30
6/6 [==============================] - 5s 818ms/step - loss: 2.3227 - accuracy: 0.7556 - val_loss: 2.1410 - val_accuracy: 0.7444
Epoch 7/30
6/6 [==============================] - 4s 736ms/step - loss: 1.9521 - accuracy: 0.8111 - val_loss: 1.8396 - val_accuracy: 0.7778
Epoch 8/30
6/6 [==============================] - 5s 770ms/step - loss: 1.6818 - accuracy: 0.8236 - val_loss: 1.5836 - val_accuracy: 0.7889
Epoch 9/30
6/6 [==============================] - 5s 821ms/step - loss: 1.4517 - accuracy: 0.8292 - val_loss: 1.3967 - val_accuracy: 0.8222
Epoch 10/30
6/6 [==============================] - 5s 951ms/step - loss: 1.2962 - accuracy: 0.8306 - val_loss: 1.2517 - val_accuracy: 0.8222
Epoch 11/30
6/6 [==============================] - 5s 761ms/step - loss: 1.1634 - accuracy: 0.8167 - val_loss: 1.1433 - val_accuracy: 0.8111
Epoch 12/30
6/6 [==============================] - 6s 1s/step - loss: 1.0511 - accuracy: 0.8417 - val_loss: 1.0490 - val_accuracy: 0.8222
Epoch 13/30
6/6 [==============================] - 5s 772ms/step - loss: 0.9540 - accuracy: 0.8500 - val_loss: 0.9753 - val_accuracy: 0.8333
Epoch 14/30
6/6 [==============================] - 4s 689ms/step - loss: 0.8983 - accuracy: 0.8528 - val_loss: 0.9123 - val_accuracy: 0.8333
Epoch 15/30
6/6 [==============================] - 4s 718ms/step - loss: 0.8481 - accuracy: 0.8528 - val_loss: 0.8810 - val_accuracy: 0.8222
Epoch 16/30
6/6 [==============================] - 5s 918ms/step - loss: 0.8086 - accuracy: 0.8528 - val_loss: 0.8254 - val_accuracy: 0.8444
Epoch 17/30
6/6 [==============================] - 5s 730ms/step - loss: 0.7560 - accuracy: 0.8694 - val_loss: 0.8148 - val_accuracy: 0.8389
Epoch 18/30
6/6 [==============================] - 5s 691ms/step - loss: 0.7319 - accuracy: 0.8597 - val_loss: 0.7664 - val_accuracy: 0.8444
Epoch 19/30
6/6 [==============================] - 5s 756ms/step - loss: 0.6876 - accuracy: 0.8750 - val_loss: 0.7573 - val_accuracy: 0.8389
Epoch 20/30
6/6 [==============================] - 5s 930ms/step - loss: 0.6999 - accuracy: 0.8583 - val_loss: 0.7302 - val_accuracy: 0.8556
Epoch 21/30
6/6 [==============================] - 4s 725ms/step - loss: 0.6508 - accuracy: 0.9000 - val_loss: 0.7267 - val_accuracy: 0.8389
Epoch 22/30
6/6 [==============================] - 5s 763ms/step - loss: 0.6360 - accuracy: 0.8819 - val_loss: 0.6923 - val_accuracy: 0.8556
Epoch 23/30
6/6 [==============================] - 4s 736ms/step - loss: 0.6273 - accuracy: 0.8875 - val_loss: 0.7113 - val_accuracy: 0.8333
Epoch 24/30
6/6 [==============================] - 6s 946ms/step - loss: 0.6292 - accuracy: 0.8847 - val_loss: 0.6655 - val_accuracy: 0.8500
Epoch 25/30
6/6 [==============================] - 5s 760ms/step - loss: 0.6082 - accuracy: 0.8847 - val_loss: 0.6953 - val_accuracy: 0.8444
Epoch 26/30
6/6 [==============================] - 4s 695ms/step - loss: 0.6077 - accuracy: 0.8806 - val_loss: 0.6465 - val_accuracy: 0.8667
Epoch 27/30
6/6 [==============================] - 6s 900ms/step - loss: 0.5713 - accuracy: 0.8819 - val_loss: 0.6483 - val_accuracy: 0.8556
Epoch 28/30
6/6 [==============================] - 4s 754ms/step - loss: 0.5807 - accuracy: 0.8806 - val_loss: 0.6286 - val_accuracy: 0.8667
Epoch 29/30
6/6 [==============================] - 5s 809ms/step - loss: 0.5657 - accuracy: 0.8861 - val_loss: 0.6176 - val_accuracy: 0.8667
Epoch 30/30
6/6 [==============================] - 5s 738ms/step - loss: 0.5363 - accuracy: 0.8958 - val_loss: 0.6299 - val_accuracy: 0.8500
8/8 [==============================] - 1s 60ms/step
Epoch 1/30
6/6 [==============================] - 6s 819ms/step - loss: 48.1439 - accuracy: 0.3056 - val_loss: 41.4969 - val_accuracy: 0.4778
Epoch 2/30
6/6 [==============================] - 5s 759ms/step - loss: 37.5850 - accuracy: 0.4264 - val_loss: 32.2978 - val_accuracy: 0.5611
Epoch 3/30
6/6 [==============================] - 6s 954ms/step - loss: 29.2065 - accuracy: 0.5097 - val_loss: 24.8331 - val_accuracy: 0.5944
Epoch 4/30
6/6 [==============================] - 5s 741ms/step - loss: 22.2822 - accuracy: 0.5597 - val_loss: 18.8882 - val_accuracy: 0.6000
Epoch 5/30
6/6 [==============================] - 5s 792ms/step - loss: 16.9009 - accuracy: 0.5847 - val_loss: 14.2300 - val_accuracy: 0.6611
Epoch 6/30
6/6 [==============================] - 5s 765ms/step - loss: 12.5930 - accuracy: 0.6722 - val_loss: 10.6587 - val_accuracy: 0.6889
Epoch 7/30
6/6 [==============================] - 5s 757ms/step - loss: 9.5507 - accuracy: 0.6403 - val_loss: 7.9637 - val_accuracy: 0.6722
Epoch 8/30
6/6 [==============================] - 5s 920ms/step - loss: 7.0121 - accuracy: 0.7181 - val_loss: 5.9408 - val_accuracy: 0.7667
Epoch 9/30
6/6 [==============================] - 4s 702ms/step - loss: 5.2905 - accuracy: 0.7236 - val_loss: 4.4823 - val_accuracy: 0.6889
Epoch 10/30
6/6 [==============================] - 5s 812ms/step - loss: 3.9809 - accuracy: 0.7306 - val_loss: 3.3939 - val_accuracy: 0.7333
Epoch 11/30
6/6 [==============================] - 6s 947ms/step - loss: 3.0283 - accuracy: 0.7681 - val_loss: 2.6385 - val_accuracy: 0.7111
Epoch 12/30
6/6 [==============================] - 4s 714ms/step - loss: 2.3484 - accuracy: 0.7764 - val_loss: 2.0840 - val_accuracy: 0.7667
Epoch 13/30
6/6 [==============================] - 5s 745ms/step - loss: 1.8740 - accuracy: 0.7889 - val_loss: 1.7062 - val_accuracy: 0.7500
Epoch 14/30
6/6 [==============================] - 6s 1s/step - loss: 1.5516 - accuracy: 0.7750 - val_loss: 1.4471 - val_accuracy: 0.7556
Epoch 15/30
6/6 [==============================] - 5s 800ms/step - loss: 1.3245 - accuracy: 0.7806 - val_loss: 1.2601 - val_accuracy: 0.7722
Epoch 16/30
6/6 [==============================] - 5s 697ms/step - loss: 1.1656 - accuracy: 0.7847 - val_loss: 1.1498 - val_accuracy: 0.7778
Epoch 17/30
6/6 [==============================] - 5s 754ms/step - loss: 1.0849 - accuracy: 0.7972 - val_loss: 1.0776 - val_accuracy: 0.7333
Epoch 18/30
6/6 [==============================] - 6s 985ms/step - loss: 1.0127 - accuracy: 0.7806 - val_loss: 0.9996 - val_accuracy: 0.8000
Epoch 19/30
6/6 [==============================] - 5s 801ms/step - loss: 0.9623 - accuracy: 0.7847 - val_loss: 0.9842 - val_accuracy: 0.7111
Epoch 20/30
6/6 [==============================] - 5s 746ms/step - loss: 0.9224 - accuracy: 0.8069 - val_loss: 0.9290 - val_accuracy: 0.8111
Epoch 21/30
6/6 [==============================] - 5s 761ms/step - loss: 0.8914 - accuracy: 0.8222 - val_loss: 0.9174 - val_accuracy: 0.7833
Epoch 22/30
6/6 [==============================] - 6s 950ms/step - loss: 0.8448 - accuracy: 0.8347 - val_loss: 0.8927 - val_accuracy: 0.8167
Epoch 23/30
6/6 [==============================] - 5s 773ms/step - loss: 0.8505 - accuracy: 0.8056 - val_loss: 0.8865 - val_accuracy: 0.7944
Epoch 24/30
6/6 [==============================] - 5s 736ms/step - loss: 0.8372 - accuracy: 0.8194 - val_loss: 0.9052 - val_accuracy: 0.7444
Epoch 25/30
6/6 [==============================] - 5s 763ms/step - loss: 0.8275 - accuracy: 0.7986 - val_loss: 0.8635 - val_accuracy: 0.7889
Epoch 26/30
6/6 [==============================] - 6s 1s/step - loss: 0.8301 - accuracy: 0.8208 - val_loss: 0.8720 - val_accuracy: 0.7667
Epoch 27/30
6/6 [==============================] - 5s 773ms/step - loss: 0.8180 - accuracy: 0.8181 - val_loss: 0.8451 - val_accuracy: 0.8222
Epoch 28/30
6/6 [==============================] - 5s 690ms/step - loss: 0.8020 - accuracy: 0.8264 - val_loss: 0.8471 - val_accuracy: 0.7778
Epoch 29/30
6/6 [==============================] - 4s 687ms/step - loss: 0.8055 - accuracy: 0.8167 - val_loss: 0.8340 - val_accuracy: 0.8056
Epoch 30/30
6/6 [==============================] - 5s 891ms/step - loss: 0.8066 - accuracy: 0.8097 - val_loss: 0.8534 - val_accuracy: 0.7778
8/8 [==============================] - 1s 70ms/step
Epoch 1/30
6/6 [==============================] - 7s 920ms/step - loss: 2.0247 - accuracy: 0.2958 - val_loss: 1.6450 - val_accuracy: 0.3889
Epoch 2/30
6/6 [==============================] - 5s 781ms/step - loss: 1.5994 - accuracy: 0.4958 - val_loss: 1.3631 - val_accuracy: 0.7111
Epoch 3/30
6/6 [==============================] - 5s 806ms/step - loss: 1.3661 - accuracy: 0.6111 - val_loss: 1.2034 - val_accuracy: 0.6889
Epoch 4/30
6/6 [==============================] - 5s 782ms/step - loss: 1.1538 - accuracy: 0.6931 - val_loss: 1.0805 - val_accuracy: 0.7111
Epoch 5/30
6/6 [==============================] - 5s 954ms/step - loss: 1.0129 - accuracy: 0.7597 - val_loss: 0.9806 - val_accuracy: 0.7611
Epoch 6/30
6/6 [==============================] - 4s 691ms/step - loss: 0.9260 - accuracy: 0.7778 - val_loss: 0.9110 - val_accuracy: 0.7611
Epoch 7/30
6/6 [==============================] - 5s 852ms/step - loss: 0.8574 - accuracy: 0.7903 - val_loss: 0.8554 - val_accuracy: 0.7722
Epoch 8/30
6/6 [==============================] - 5s 919ms/step - loss: 0.7887 - accuracy: 0.8264 - val_loss: 0.7978 - val_accuracy: 0.8167
Epoch 9/30
6/6 [==============================] - 5s 764ms/step - loss: 0.7688 - accuracy: 0.8056 - val_loss: 0.7658 - val_accuracy: 0.8111
Epoch 10/30
6/6 [==============================] - 4s 712ms/step - loss: 0.7143 - accuracy: 0.8292 - val_loss: 0.7277 - val_accuracy: 0.8000
Epoch 11/30
6/6 [==============================] - 6s 962ms/step - loss: 0.6945 - accuracy: 0.8319 - val_loss: 0.7013 - val_accuracy: 0.8222
Epoch 12/30
6/6 [==============================] - 4s 697ms/step - loss: 0.6549 - accuracy: 0.8486 - val_loss: 0.6788 - val_accuracy: 0.8222
Epoch 13/30
6/6 [==============================] - 5s 771ms/step - loss: 0.6113 - accuracy: 0.8639 - val_loss: 0.6623 - val_accuracy: 0.8278
Epoch 14/30
6/6 [==============================] - 5s 860ms/step - loss: 0.6057 - accuracy: 0.8556 - val_loss: 0.6425 - val_accuracy: 0.8278
Epoch 15/30
6/6 [==============================] - 5s 766ms/step - loss: 0.5832 - accuracy: 0.8708 - val_loss: 0.6303 - val_accuracy: 0.8444
Epoch 16/30
6/6 [==============================] - 5s 903ms/step - loss: 0.5538 - accuracy: 0.8736 - val_loss: 0.6086 - val_accuracy: 0.8333
Epoch 17/30
6/6 [==============================] - 5s 754ms/step - loss: 0.5533 - accuracy: 0.8819 - val_loss: 0.5982 - val_accuracy: 0.8333
Epoch 18/30
6/6 [==============================] - 5s 782ms/step - loss: 0.5409 - accuracy: 0.8750 - val_loss: 0.5862 - val_accuracy: 0.8389
Epoch 19/30
6/6 [==============================] - 5s 973ms/step - loss: 0.5318 - accuracy: 0.8667 - val_loss: 0.5805 - val_accuracy: 0.8444
Epoch 20/30
6/6 [==============================] - 5s 766ms/step - loss: 0.4881 - accuracy: 0.9028 - val_loss: 0.5694 - val_accuracy: 0.8389
Epoch 21/30
6/6 [==============================] - 5s 826ms/step - loss: 0.4953 - accuracy: 0.8833 - val_loss: 0.5621 - val_accuracy: 0.8556
Epoch 22/30
6/6 [==============================] - 5s 760ms/step - loss: 0.4908 - accuracy: 0.8847 - val_loss: 0.5482 - val_accuracy: 0.8444
Epoch 23/30
6/6 [==============================] - 5s 833ms/step - loss: 0.4854 - accuracy: 0.8792 - val_loss: 0.5422 - val_accuracy: 0.8611
Epoch 24/30
6/6 [==============================] - 4s 702ms/step - loss: 0.4798 - accuracy: 0.8806 - val_loss: 0.5327 - val_accuracy: 0.8611
Epoch 25/30
6/6 [==============================] - 4s 767ms/step - loss: 0.4741 - accuracy: 0.8917 - val_loss: 0.5283 - val_accuracy: 0.8556
Epoch 26/30
6/6 [==============================] - 5s 891ms/step - loss: 0.4538 - accuracy: 0.8917 - val_loss: 0.5250 - val_accuracy: 0.8722
Epoch 27/30
6/6 [==============================] - 5s 881ms/step - loss: 0.4312 - accuracy: 0.9042 - val_loss: 0.5178 - val_accuracy: 0.8500
Epoch 28/30
6/6 [==============================] - 5s 698ms/step - loss: 0.4565 - accuracy: 0.8889 - val_loss: 0.5264 - val_accuracy: 0.8722
Epoch 29/30
6/6 [==============================] - 5s 770ms/step - loss: 0.4455 - accuracy: 0.9028 - val_loss: 0.5053 - val_accuracy: 0.8667
Epoch 30/30
6/6 [==============================] - 5s 903ms/step - loss: 0.4348 - accuracy: 0.9111 - val_loss: 0.5016 - val_accuracy: 0.8722
8/8 [==============================] - 1s 61ms/step
Epoch 1/30
6/6 [==============================] - 6s 727ms/step - loss: 6.1820 - accuracy: 0.3278 - val_loss: 5.4072 - val_accuracy: 0.3889
Epoch 2/30
6/6 [==============================] - 5s 879ms/step - loss: 5.0916 - accuracy: 0.4833 - val_loss: 4.4368 - val_accuracy: 0.6444
Epoch 3/30
6/6 [==============================] - 5s 796ms/step - loss: 4.1462 - accuracy: 0.6014 - val_loss: 3.6786 - val_accuracy: 0.6500
Epoch 4/30
6/6 [==============================] - 5s 786ms/step - loss: 3.4262 - accuracy: 0.6528 - val_loss: 3.0562 - val_accuracy: 0.7444
Epoch 5/30
6/6 [==============================] - 4s 705ms/step - loss: 2.8508 - accuracy: 0.7167 - val_loss: 2.5895 - val_accuracy: 0.7056
Epoch 6/30
6/6 [==============================] - 5s 905ms/step - loss: 2.3941 - accuracy: 0.7444 - val_loss: 2.1738 - val_accuracy: 0.7611
Epoch 7/30
6/6 [==============================] - 4s 699ms/step - loss: 2.0125 - accuracy: 0.7736 - val_loss: 1.8835 - val_accuracy: 0.7444
Epoch 8/30
6/6 [==============================] - 4s 701ms/step - loss: 1.7736 - accuracy: 0.7764 - val_loss: 1.6258 - val_accuracy: 0.7833
Epoch 9/30
6/6 [==============================] - 5s 805ms/step - loss: 1.5333 - accuracy: 0.8069 - val_loss: 1.4402 - val_accuracy: 0.7778
Epoch 10/30
6/6 [==============================] - 5s 910ms/step - loss: 1.3327 - accuracy: 0.8250 - val_loss: 1.2928 - val_accuracy: 0.7889
Epoch 11/30
6/6 [==============================] - 5s 731ms/step - loss: 1.2123 - accuracy: 0.8083 - val_loss: 1.1827 - val_accuracy: 0.7889
Epoch 12/30
6/6 [==============================] - 5s 731ms/step - loss: 1.1132 - accuracy: 0.8181 - val_loss: 1.0829 - val_accuracy: 0.8167
Epoch 13/30
6/6 [==============================] - 5s 740ms/step - loss: 1.0305 - accuracy: 0.8236 - val_loss: 1.0166 - val_accuracy: 0.8222
Epoch 14/30
6/6 [==============================] - 5s 923ms/step - loss: 0.9332 - accuracy: 0.8361 - val_loss: 0.9584 - val_accuracy: 0.8222
Epoch 15/30
6/6 [==============================] - 4s 699ms/step - loss: 0.9037 - accuracy: 0.8444 - val_loss: 0.9171 - val_accuracy: 0.8167
Epoch 16/30
6/6 [==============================] - 5s 889ms/step - loss: 0.8435 - accuracy: 0.8403 - val_loss: 0.8655 - val_accuracy: 0.8333
Epoch 17/30
6/6 [==============================] - 6s 942ms/step - loss: 0.8413 - accuracy: 0.8319 - val_loss: 0.8417 - val_accuracy: 0.8333
Epoch 18/30
6/6 [==============================] - 4s 687ms/step - loss: 0.7986 - accuracy: 0.8264 - val_loss: 0.8164 - val_accuracy: 0.8333
Epoch 19/30
6/6 [==============================] - 4s 693ms/step - loss: 0.7610 - accuracy: 0.8667 - val_loss: 0.7869 - val_accuracy: 0.8500
Epoch 20/30
6/6 [==============================] - 5s 920ms/step - loss: 0.7360 - accuracy: 0.8569 - val_loss: 0.7697 - val_accuracy: 0.8278
Epoch 21/30
6/6 [==============================] - 5s 845ms/step - loss: 0.7132 - accuracy: 0.8500 - val_loss: 0.7555 - val_accuracy: 0.8500
Epoch 22/30
6/6 [==============================] - 5s 729ms/step - loss: 0.6931 - accuracy: 0.8681 - val_loss: 0.7422 - val_accuracy: 0.8222
Epoch 23/30
6/6 [==============================] - 4s 732ms/step - loss: 0.6753 - accuracy: 0.8611 - val_loss: 0.7122 - val_accuracy: 0.8444
Epoch 24/30
6/6 [==============================] - 6s 954ms/step - loss: 0.6779 - accuracy: 0.8597 - val_loss: 0.7050 - val_accuracy: 0.8389
Epoch 25/30
6/6 [==============================] - 4s 692ms/step - loss: 0.6538 - accuracy: 0.8736 - val_loss: 0.6905 - val_accuracy: 0.8444
Epoch 26/30
6/6 [==============================] - 5s 780ms/step - loss: 0.6583 - accuracy: 0.8653 - val_loss: 0.6947 - val_accuracy: 0.8333
Epoch 27/30
6/6 [==============================] - 5s 800ms/step - loss: 0.6584 - accuracy: 0.8486 - val_loss: 0.6762 - val_accuracy: 0.8500
Epoch 28/30
6/6 [==============================] - 4s 713ms/step - loss: 0.6146 - accuracy: 0.8778 - val_loss: 0.6670 - val_accuracy: 0.8389
Epoch 29/30
6/6 [==============================] - 5s 885ms/step - loss: 0.5979 - accuracy: 0.8903 - val_loss: 0.6622 - val_accuracy: 0.8500
Epoch 30/30
6/6 [==============================] - 5s 744ms/step - loss: 0.6053 - accuracy: 0.8792 - val_loss: 0.6442 - val_accuracy: 0.8611
8/8 [==============================] - 1s 60ms/step
Epoch 1/30
6/6 [==============================] - 7s 927ms/step - loss: 47.5526 - accuracy: 0.2944 - val_loss: 41.4676 - val_accuracy: 0.4333
Epoch 2/30
6/6 [==============================] - 5s 747ms/step - loss: 37.4806 - accuracy: 0.3847 - val_loss: 32.3120 - val_accuracy: 0.5389
Epoch 3/30
6/6 [==============================] - 4s 692ms/step - loss: 29.1420 - accuracy: 0.4639 - val_loss: 24.8801 - val_accuracy: 0.6444
Epoch 4/30
6/6 [==============================] - 5s 948ms/step - loss: 22.1949 - accuracy: 0.4792 - val_loss: 18.9723 - val_accuracy: 0.5944
Epoch 5/30
6/6 [==============================] - 4s 681ms/step - loss: 16.9933 - accuracy: 0.5528 - val_loss: 14.3196 - val_accuracy: 0.6333
Epoch 6/30
6/6 [==============================] - 5s 865ms/step - loss: 12.8271 - accuracy: 0.6292 - val_loss: 10.7402 - val_accuracy: 0.6833
Epoch 7/30
6/6 [==============================] - 5s 753ms/step - loss: 9.6333 - accuracy: 0.6736 - val_loss: 8.0554 - val_accuracy: 0.6333
Epoch 8/30
6/6 [==============================] - 4s 720ms/step - loss: 7.1824 - accuracy: 0.6583 - val_loss: 6.0326 - val_accuracy: 0.7000
Epoch 9/30
6/6 [==============================] - 6s 873ms/step - loss: 5.3754 - accuracy: 0.6958 - val_loss: 4.5601 - val_accuracy: 0.7056
Epoch 10/30
6/6 [==============================] - 5s 870ms/step - loss: 4.0852 - accuracy: 0.7222 - val_loss: 3.4780 - val_accuracy: 0.7222
Epoch 11/30
6/6 [==============================] - 5s 864ms/step - loss: 3.0936 - accuracy: 0.7611 - val_loss: 2.7027 - val_accuracy: 0.7444
Epoch 12/30
6/6 [==============================] - 4s 748ms/step - loss: 2.4366 - accuracy: 0.7292 - val_loss: 2.1511 - val_accuracy: 0.7500
Epoch 13/30
6/6 [==============================] - 6s 960ms/step - loss: 1.9743 - accuracy: 0.7319 - val_loss: 1.7679 - val_accuracy: 0.7444
Epoch 14/30
6/6 [==============================] - 4s 727ms/step - loss: 1.6357 - accuracy: 0.7639 - val_loss: 1.5070 - val_accuracy: 0.7667
Epoch 15/30
6/6 [==============================] - 5s 830ms/step - loss: 1.3949 - accuracy: 0.7708 - val_loss: 1.3189 - val_accuracy: 0.7611
Epoch 16/30
6/6 [==============================] - 5s 701ms/step - loss: 1.2667 - accuracy: 0.7694 - val_loss: 1.1971 - val_accuracy: 0.7611
Epoch 17/30
6/6 [==============================] - 5s 764ms/step - loss: 1.1584 - accuracy: 0.7375 - val_loss: 1.1099 - val_accuracy: 0.7722
Epoch 18/30
6/6 [==============================] - 5s 915ms/step - loss: 1.0697 - accuracy: 0.7750 - val_loss: 1.0533 - val_accuracy: 0.7500
Epoch 19/30
6/6 [==============================] - 4s 688ms/step - loss: 1.0108 - accuracy: 0.7875 - val_loss: 1.0044 - val_accuracy: 0.7667
Epoch 20/30
6/6 [==============================] - 4s 719ms/step - loss: 0.9654 - accuracy: 0.8000 - val_loss: 0.9709 - val_accuracy: 0.7833
Epoch 21/30
6/6 [==============================] - 5s 838ms/step - loss: 0.9462 - accuracy: 0.7736 - val_loss: 0.9640 - val_accuracy: 0.7778
Epoch 22/30
6/6 [==============================] - 5s 894ms/step - loss: 0.9487 - accuracy: 0.7986 - val_loss: 0.9493 - val_accuracy: 0.7611
Epoch 23/30
6/6 [==============================] - 5s 750ms/step - loss: 0.9213 - accuracy: 0.7819 - val_loss: 0.9322 - val_accuracy: 0.7889
Epoch 24/30
6/6 [==============================] - 5s 784ms/step - loss: 0.8951 - accuracy: 0.8042 - val_loss: 0.9128 - val_accuracy: 0.7833
Epoch 25/30
6/6 [==============================] - 5s 802ms/step - loss: 0.9131 - accuracy: 0.7792 - val_loss: 0.9147 - val_accuracy: 0.7778
Epoch 26/30
6/6 [==============================] - 5s 941ms/step - loss: 0.8766 - accuracy: 0.7944 - val_loss: 0.8980 - val_accuracy: 0.8000
Epoch 27/30
6/6 [==============================] - 4s 704ms/step - loss: 0.8693 - accuracy: 0.8083 - val_loss: 0.9001 - val_accuracy: 0.7833
Epoch 28/30
6/6 [==============================] - 6s 961ms/step - loss: 0.8682 - accuracy: 0.8000 - val_loss: 0.8988 - val_accuracy: 0.7778
Epoch 29/30
6/6 [==============================] - 5s 774ms/step - loss: 0.8753 - accuracy: 0.7833 - val_loss: 0.8706 - val_accuracy: 0.7833
Epoch 30/30
6/6 [==============================] - 5s 764ms/step - loss: 0.8522 - accuracy: 0.8069 - val_loss: 0.8866 - val_accuracy: 0.7667
8/8 [==============================] - 1s 62ms/step
Out[55]:
({'dropout_rate': 0.3, 'l2_regularization': 0.001},
 0.9422222222222222,
 16,
 {16: [{'dropout_rate': 0.3,
    'l2_regularization': 0.001,
    'accuracy': 0.9422222222222222},
   {'dropout_rate': 0.3,
    'l2_regularization': 0.01,
    'accuracy': 0.9111111111111111},
   {'dropout_rate': 0.3,
    'l2_regularization': 0.1,
    'accuracy': 0.8088888888888889},
   {'dropout_rate': 0.5,
    'l2_regularization': 0.001,
    'accuracy': 0.9377777777777778},
   {'dropout_rate': 0.5,
    'l2_regularization': 0.01,
    'accuracy': 0.9111111111111111},
   {'dropout_rate': 0.5,
    'l2_regularization': 0.1,
    'accuracy': 0.7866666666666666},
   {'dropout_rate': 0.7,
    'l2_regularization': 0.001,
    'accuracy': 0.9066666666666666},
   {'dropout_rate': 0.7,
    'l2_regularization': 0.01,
    'accuracy': 0.8711111111111111},
   {'dropout_rate': 0.7,
    'l2_regularization': 0.1,
    'accuracy': 0.8044444444444444}],
  32: [{'dropout_rate': 0.3, 'l2_regularization': 0.001, 'accuracy': 0.88},
   {'dropout_rate': 0.3, 'l2_regularization': 0.01, 'accuracy': 0.92},
   {'dropout_rate': 0.3,
    'l2_regularization': 0.1,
    'accuracy': 0.8266666666666667},
   {'dropout_rate': 0.5, 'l2_regularization': 0.001, 'accuracy': 0.92},
   {'dropout_rate': 0.5,
    'l2_regularization': 0.01,
    'accuracy': 0.8755555555555555},
   {'dropout_rate': 0.5,
    'l2_regularization': 0.1,
    'accuracy': 0.8177777777777778},
   {'dropout_rate': 0.7,
    'l2_regularization': 0.001,
    'accuracy': 0.9244444444444444},
   {'dropout_rate': 0.7,
    'l2_regularization': 0.01,
    'accuracy': 0.9066666666666666},
   {'dropout_rate': 0.7,
    'l2_regularization': 0.1,
    'accuracy': 0.8177777777777778}],
  64: [{'dropout_rate': 0.3,
    'l2_regularization': 0.001,
    'accuracy': 0.9244444444444444},
   {'dropout_rate': 0.3,
    'l2_regularization': 0.01,
    'accuracy': 0.9111111111111111},
   {'dropout_rate': 0.3,
    'l2_regularization': 0.1,
    'accuracy': 0.7955555555555556},
   {'dropout_rate': 0.5,
    'l2_regularization': 0.001,
    'accuracy': 0.9066666666666666},
   {'dropout_rate': 0.5,
    'l2_regularization': 0.01,
    'accuracy': 0.9111111111111111},
   {'dropout_rate': 0.5,
    'l2_regularization': 0.1,
    'accuracy': 0.8577777777777778},
   {'dropout_rate': 0.7,
    'l2_regularization': 0.001,
    'accuracy': 0.9155555555555556},
   {'dropout_rate': 0.7,
    'l2_regularization': 0.01,
    'accuracy': 0.8444444444444444},
   {'dropout_rate': 0.7,
    'l2_regularization': 0.1,
    'accuracy': 0.8044444444444444}],
  128: [{'dropout_rate': 0.3,
    'l2_regularization': 0.001,
    'accuracy': 0.9244444444444444},
   {'dropout_rate': 0.3,
    'l2_regularization': 0.01,
    'accuracy': 0.8977777777777778},
   {'dropout_rate': 0.3,
    'l2_regularization': 0.1,
    'accuracy': 0.8622222222222222},
   {'dropout_rate': 0.5,
    'l2_regularization': 0.001,
    'accuracy': 0.9066666666666666},
   {'dropout_rate': 0.5,
    'l2_regularization': 0.01,
    'accuracy': 0.8488888888888889},
   {'dropout_rate': 0.5,
    'l2_regularization': 0.1,
    'accuracy': 0.8266666666666667},
   {'dropout_rate': 0.7,
    'l2_regularization': 0.001,
    'accuracy': 0.9066666666666666},
   {'dropout_rate': 0.7,
    'l2_regularization': 0.01,
    'accuracy': 0.8888888888888888},
   {'dropout_rate': 0.7,
    'l2_regularization': 0.1,
    'accuracy': 0.8088888888888889}]})

It appears that from the above hyperparameter tuning, the best performing combination of choices for each Batch Size is
Batch size 16: {'dropout_rate': 0.3, 'l2_regularization': 0.001} - Accuracy: 0.9422222222222222
Batch size 32: {'dropout_rate': 0.3, 'l2_regularization': 0.001} - Accuracy: 0.88
Batch size 64: {'dropout_rate': 0.3, 'l2_regularization': 0.001} - Accuracy: 0.9244444444444444
Batch size 128: {'dropout_rate': 0.3, 'l2_regularization': 0.001} - Accuracy: 0.9244444444444444

Throuout different the above four choices, it appears that the model performs the best when the dropout_rate is 0.3, l2_regularization is 0.001, and Batch Size=16. We have also concluded the optimal epoch size is 30.

An optimal model should be implemented for saving purpose:¶

In [57]:
import numpy as np
from sklearn.model_selection import train_test_split
from tensorflow.keras.applications import VGG16
from tensorflow.keras.layers import GlobalAveragePooling2D, Dense, Dropout
from tensorflow.keras.preprocessing.image import ImageDataGenerator
from tensorflow.keras.regularizers import l2
from tensorflow.keras.callbacks import EarlyStopping
from tensorflow.keras.models import Model, save_model


# Split the data into train and test sets
X_train, X_test, Y_train, Y_test = train_test_split(X, y, test_size=0.2, random_state=42)
X_train, X_val, Y_train, Y_val = train_test_split(X_train, Y_train, test_size=0.2, random_state=42)

num_labels = len(np.unique(df['label']))
y_train = np.eye(num_labels)[Y_train]
y_test = np.eye(num_labels)[Y_test]
y_val = np.eye(num_labels)[Y_val]

# Data augmentation
train_datagen = ImageDataGenerator(
    rotation_range=20,
    width_shift_range=0.1,
    height_shift_range=0.1,
    shear_range=0.2,
    zoom_range=0.2,
    horizontal_flip=True,
    fill_mode='nearest'
)
train_datagen.fit(X_train)

# Initialize the base model
base_model = VGG16(weights='imagenet', include_top=False, input_shape=(150, 150, 3))
for layer in base_model.layers:
    layer.trainable = False

# Add custom layers on top of the base model
x = base_model.output
x = GlobalAveragePooling2D()(x)
x = Dense(512, activation='relu', kernel_regularizer=l2(0.001))(x)  # Adding L2 regularization
x = Dropout(0.3)(x)  # Adding Dropout layer
predictions = Dense(num_labels, activation='softmax')(x)
optimal_model = Model(inputs=base_model.input, outputs=predictions)

# Compile the model
optimal_model.compile(optimizer='adam', loss='categorical_crossentropy', metrics=['accuracy'])

# Early stopping
early_stop = EarlyStopping(monitor='val_loss', patience=3, restore_best_weights=True)

# Fit the model with augmented data
history = optimal_model.fit(
    train_datagen.flow(X_train, y_train, batch_size=16),
    epochs=30,
    validation_data=(X_val, y_val),
    callbacks=[early_stop]
)

# Evaluate the model on the test set
test_predictions = optimal_model.predict(X_test)
predicted_labels = np.argmax(test_predictions, axis=1)
accuracy = np.mean(predicted_labels == Y_test)




# Print the results
print("Accuracy: {:.2f}%".format(accuracy * 100))
Epoch 1/30
45/45 [==============================] - 7s 130ms/step - loss: 1.2766 - accuracy: 0.6222 - val_loss: 0.9571 - val_accuracy: 0.7222
Epoch 2/30
45/45 [==============================] - 4s 96ms/step - loss: 0.7708 - accuracy: 0.8056 - val_loss: 0.7299 - val_accuracy: 0.8000
Epoch 3/30
45/45 [==============================] - 6s 129ms/step - loss: 0.6254 - accuracy: 0.8486 - val_loss: 0.6422 - val_accuracy: 0.8111
Epoch 4/30
45/45 [==============================] - 4s 94ms/step - loss: 0.5251 - accuracy: 0.8861 - val_loss: 0.6167 - val_accuracy: 0.8500
Epoch 5/30
45/45 [==============================] - 5s 100ms/step - loss: 0.4878 - accuracy: 0.8875 - val_loss: 0.6280 - val_accuracy: 0.8056
Epoch 6/30
45/45 [==============================] - 6s 138ms/step - loss: 0.4785 - accuracy: 0.8833 - val_loss: 0.5714 - val_accuracy: 0.8667
Epoch 7/30
45/45 [==============================] - 4s 96ms/step - loss: 0.4533 - accuracy: 0.8903 - val_loss: 0.5247 - val_accuracy: 0.8833
Epoch 8/30
45/45 [==============================] - 5s 110ms/step - loss: 0.4181 - accuracy: 0.9111 - val_loss: 0.4904 - val_accuracy: 0.8889
Epoch 9/30
45/45 [==============================] - 5s 111ms/step - loss: 0.3890 - accuracy: 0.9111 - val_loss: 0.4652 - val_accuracy: 0.8889
Epoch 10/30
45/45 [==============================] - 5s 100ms/step - loss: 0.3589 - accuracy: 0.9222 - val_loss: 0.4653 - val_accuracy: 0.8833
Epoch 11/30
45/45 [==============================] - 6s 124ms/step - loss: 0.3705 - accuracy: 0.9194 - val_loss: 0.4573 - val_accuracy: 0.8611
Epoch 12/30
45/45 [==============================] - 4s 97ms/step - loss: 0.3622 - accuracy: 0.9194 - val_loss: 0.5108 - val_accuracy: 0.8556
Epoch 13/30
45/45 [==============================] - 6s 130ms/step - loss: 0.3609 - accuracy: 0.9250 - val_loss: 0.4681 - val_accuracy: 0.8778
Epoch 14/30
45/45 [==============================] - 5s 101ms/step - loss: 0.3690 - accuracy: 0.9111 - val_loss: 0.4430 - val_accuracy: 0.9000
Epoch 15/30
45/45 [==============================] - 4s 95ms/step - loss: 0.3249 - accuracy: 0.9347 - val_loss: 0.4489 - val_accuracy: 0.9056
Epoch 16/30
45/45 [==============================] - 7s 149ms/step - loss: 0.3250 - accuracy: 0.9167 - val_loss: 0.4686 - val_accuracy: 0.8778
Epoch 17/30
45/45 [==============================] - 5s 103ms/step - loss: 0.3109 - accuracy: 0.9194 - val_loss: 0.4663 - val_accuracy: 0.8500
8/8 [==============================] - 1s 60ms/step
Accuracy: 93.78%
In [59]:
#plot the structure of the optimal model
plot_model(optimal_model,to_file="optimalVGG16.png",show_shapes=True,show_layer_names=True)
Image(filename="optimalVGG16.png")
Out[59]:
In [61]:
# Save the model
optimal_model.save('/content/drive/MyDrive/vgg16_model.h5')
print("The model has been saved")
The model has been saved
In [62]:
#test if the same model can be reloaded
reloaded_model = tf.keras.models.load_model('/content/drive/MyDrive/vgg16_model.h5')
print("The model has been reloaded")
The model has been reloaded

Conclusion¶

The main objective of this project is to identify an optimal model for weather image classification, incorporating useful techniques. These techniques include but are not limited to regularization, data augmentation, and early stopping. By utilizing these techniques, the project aims to save computational resources by determining the optimal combination of epochs and batch size that accurately reflects the model's prediction capabilities.

It is important to note that there are various options available for modeling structures and regularization techniques, and it is highly recommended to explore and implement different choices. However, based on the specific dataset provided for this project, it can be reasonably concluded that transfer learning models from the VGG16 model, along with appropriate regularization techniques, are sufficient to generate reasonable predictions. These models exhibit decent values of loss and accuracy when evaluated on the testing, training, and validation datasets.